我有一组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
感谢任何帮助,谢谢
答案 0 :(得分:5)
我认为你需要为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
将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
如果需要将值附加到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
答案 1 :(得分:1)
使用append
In [3884]: s = pd.Series({'Item': 'Total', 'A': df['A'].sum()},
index=df.columns).fillna('')
In [3885]: df.append(s, ignore_index=True)
Out[3885]:
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
4 Total 21
轻松返回副本
详细
In [3886]: df
Out[3886]:
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
In [3887]: s
Out[3887]:
Item Total
A 21
B
C
D
E
F
dtype: object