我有一个数据框,
df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123,
'count': 12}, {'project': 123457, 'date': '08/07/2019',
'total': 124, 'count': 13}, {'project': 123458, 'date':
'08/07/2019', 'total': 125, 'count': 14}])
我只想在total
和count
列的底部添加一个总行。我知道我能做到
df.loc['Total'] = df.sum(numeric_only=True)
但是我的project
列是数字,我不不要在最底行添加单词Total
,只希望这两列之和。有什么方法可以删除单词并确保仅对这两列求和?
答案 0 :(得分:3)
我相信每个项目都有唯一的ID,所以我不知道这是否是有效的解决方案。由于对这个问题没有限制,因此我提出以下建议,通过使用列项目作为索引,您可以轻松地添加带有其信息的其他项目ID,最后一行将它们汇总起来!
import pandas as pd
df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123,
'count': 12}, {'project': 123457, 'date': '08/07/2019',
'total': 124, 'count': 13}, {'project': 123458, 'date':
'08/07/2019', 'total': 125, 'count': 14}])
df1 = df.set_index('project')
df1.loc['Total'] = df1.sum(numeric_only=True)
print(df1)
我得到了这个结果,这就是我相信你想要的:
date total count
project
123456 08/07/2019 123.0 12.0
123457 08/07/2019 124.0 13.0
123458 08/07/2019 125.0 14.0
Total NaN 372.0 39.0
答案 1 :(得分:2)
我相信您正在寻找类似的东西
In [1]:
import pandas as pd
df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123,
'count': 12}, {'project': 123457, 'date': '08/07/2019',
'total': 124, 'count': 13}, {'project': 123458, 'date':
'08/07/2019', 'total': 125, 'count': 14}])
df.append(df[['count', 'total']].sum(numeric_only=True), ignore_index=True)
Out [1]:
count date project total
0 12.0 08/07/2019 123456.0 123.0
1 13.0 08/07/2019 123457.0 124.0
2 14.0 08/07/2019 123458.0 125.0
3 39.0 NaN NaN 372.0
答案 2 :(得分:0)
我会这样做:
import pandas as pd
import numpy as np
df = pd.DataFrame([{'project': 123456, 'date': '08/07/2019', 'total': 123,
'count': 12}, {'project': 123457, 'date': '08/07/2019',
'total': 124, 'count': 13}, {'project': 123458, 'date':
'08/07/2019', 'total': 125, 'count': 14}])
# Append an empty row at the bottom of the df
df.loc[df.shape[0]] = [np.nan for col_num in range(1,df.shape[1]+1)]
# Write the sums of the columns you want at the last row
df.iloc[df.shape[0]-1,[2,3]] = df.iloc[:,[2,3]].sum(axis=0)
输出:
project date total count
0 123456.0 08/07/2019 123.0 12.0
1 123457.0 08/07/2019 124.0 13.0
2 123458.0 08/07/2019 125.0 14.0
3 NaN NaN 372.0 39.0
这样,无论df有多少行或多少列,您都可以计算想要的任何列的总和并将它们附加在最后一行。