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