(Python):DataFrames添加的总行只是一列的总和

KSQ*_*KSQ 1 python dataframe pandas

我有一组DataFrames,并希望添加一个总行,该行只汇总其中一列(下面的示例表)

我可以使用df.loc['Total']= df.sum()甚至添加总列df.loc['Total'] = [df[x].sum() for x in df.columns],但是我需要除A以外的所有列以显示空白并且语法有些问题.

Item    A   B   C   D   E   F
1       1   2   3   4   5   6
2       5   10  15  20  25  30
3       10  20  30  40  50  60
4       5   15  25  35  45  55
Total   21  
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏,谢谢

jez*_*ael 6

我认为你需要为sum选择列,然后指定输出列:

df.loc['Total', 'A']= df['A'].sum()
print (df)
       Item     A     B     C     D     E     F
0       1.0   1.0   2.0   3.0   4.0   5.0   6.0
1       2.0   5.0  10.0  15.0  20.0  25.0  30.0
2       3.0  10.0  20.0  30.0  40.0  50.0  60.0
3       4.0   5.0  15.0  25.0  35.0  45.0  55.0
Total   NaN  21.0   NaN   NaN   NaN   NaN   NaN
Run Code Online (Sandbox Code Playgroud)

可以替换NaN为空的空格,但是获取混合类型 - 带字符串的数字和一些函数应该失败:

df.loc['Total'] = df[['A']].sum().reindex(df.columns, fill_value='')
print (df)
      Item   A   B   C   D   E   F
0        1   1   2   3   4   5   6
1        2   5  10  15  20  25  30
2        3  10  20  30  40  50  60
3        4   5  15  25  35  45  55
Total       21       
Run Code Online (Sandbox Code Playgroud)

如果需要将值附加到2列,则需要分配值列表:

df.loc[len(df), ['Item','A']]= ['Total', df['A'].sum()]
print (df)
    Item     A     B     C     D     E     F
0      1   1.0   2.0   3.0   4.0   5.0   6.0
1      2   5.0  10.0  15.0  20.0  25.0  30.0
2      3  10.0  20.0  30.0  40.0  50.0  60.0
3      4   5.0  15.0  25.0  35.0  45.0  55.0
4  Total  21.0   NaN   NaN   NaN   NaN   NaN
Run Code Online (Sandbox Code Playgroud)