Pandasの列の合計を取得する 質問する

Pandasの列の合計を取得する 質問する

以下に示すように、複数の列を持つ Pandas データ フレームがあり、列の合計を取得したいと考えていますMyColumn

           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   

期待される出力

出力は次の列の合計になるはずです: 319

または、合計を含むdfタイトルの新しい行を編集したいとします。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

groupbyおよびを使用して列の合計を取得しようとしました.sum():

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

これにより、次のエラーが発生します。

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

ベストアンサー1

以下を使用する必要がありますsum:

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

次に、locを使用しますSeries。その場合、インデックスは、合計する必要がある特定の列と同じに設定する必要があります。

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

スカラーを渡すと、すべての行の値が入力されるためです。

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

他の 2 つのソリューションは でありatix以下のアプリケーションを参照してください。

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

注: Pandas v0.20 以降では、ixは非推奨になりました。代わりにlocまたは を使用してくださいiloc

おすすめ記事