# Get total of Pandas column

** Target**

I have a Pandas data frame, as shown below, with multiple columns and would like to get the total of column, `MyColumn`

.

** Data Frame** -

`df`

:`print df`

```
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
```

** My attempt** :

I have attempted to get the sum of the column using `groupby`

and `.sum()`

:

```
Total = df.groupby['MyColumn'].sum()
print Total
```

This causes the following error:

```
TypeError: 'instancemethod' object has no attribute '__getitem__'
```

*Expected Output*

I'd have expected the output to be as followed:

```
319
```

Or alternatively, I would like `df`

to be edited with a new `row`

entitled `TOTAL`

containing the total:

```
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
TOTAL 319
```

You should use `sum`

:

```
Total = df['MyColumn'].sum()
print (Total)
319
```

Then you use `loc`

with `Series`

, in that case the index should be set as the same as the specific column you need to sum:

```
df.loc['Total'] = pd.Series(df['MyColumn'].sum(), index = ['MyColumn'])
print (df)
X MyColumn Y Z
0 A 84.0 13.0 69.0
1 B 76.0 77.0 127.0
2 C 28.0 69.0 16.0
3 D 28.0 28.0 31.0
4 E 19.0 20.0 85.0
5 F 84.0 193.0 70.0
Total NaN 319.0 NaN NaN
```

because if you pass scalar, the values of all rows will be filled:

```
df.loc['Total'] = df['MyColumn'].sum()
print (df)
X MyColumn Y Z
0 A 84 13.0 69.0
1 B 76 77.0 127.0
2 C 28 69.0 16.0
3 D 28 28.0 31.0
4 E 19 20.0 85.0
5 F 84 193.0 70.0
Total 319 319 319.0 319.0
```

Two other solutions are with `at`

, and `ix`

see the applications below:

```
df.at['Total', 'MyColumn'] = df['MyColumn'].sum()
print (df)
X MyColumn Y Z
0 A 84.0 13.0 69.0
1 B 76.0 77.0 127.0
2 C 28.0 69.0 16.0
3 D 28.0 28.0 31.0
4 E 19.0 20.0 85.0
5 F 84.0 193.0 70.0
Total NaN 319.0 NaN NaN
```

```
df.ix['Total', 'MyColumn'] = df['MyColumn'].sum()
print (df)
X MyColumn Y Z
0 A 84.0 13.0 69.0
1 B 76.0 77.0 127.0
2 C 28.0 69.0 16.0
3 D 28.0 28.0 31.0
4 E 19.0 20.0 85.0
5 F 84.0 193.0 70.0
Total NaN 319.0 NaN NaN
```

**Note:** Since Pandas v0.20, `ix`

has been deprecated. Use `loc`

or `iloc`

instead.

From: stackoverflow.com/q/41286569