Get total of Pandas column

前端 未结 5 589
予麋鹿
予麋鹿 2020-11-30 18:58

Target

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

5条回答
  •  温柔的废话
    2020-11-30 19:36

    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.

提交回复
热议问题