如何在Pandas中为相同Key的行新增求和汇总行
如何在Pandas中为相同Key的行新增求和汇总行
嘿,刚接触Pandas完全不用慌,我来帮你搞定这个需求!你想要保留原始数据的同时,给每个相同Key的组新增一行显示value的总和,咱们一步步来实现:
首先,先模拟你的原始数据(方便后续演示):
import pandas as pd # 模拟你的输入数据 data = { 'Key': [10, 11, 12, 12, 13, 13], 'value': [500, 500, 600, 800, 1000, 1200] } df = pd.DataFrame(data)
接下来是核心操作,分三步完成:
- 第一步:按
Key分组,计算每个组的value总和,生成汇总行的DataFrame - 第二步:把原始数据和汇总数据合并到一起
- 第三步:按
Key排序,让相同Key的原始行和汇总行集中排列
对应的代码如下:
# 1. 生成每个Key的汇总行 summary_df = df.groupby('Key', as_index=False)['value'].sum() # 2. 合并原始数据和汇总数据 combined_df = pd.concat([df, summary_df], ignore_index=True) # 3. 按Key排序,确保同Key的行放在一起 combined_df = combined_df.sort_values(by='Key', ignore_index=True)
运行后你打印combined_df,就能得到和你示例一致的结果:
Key value 0 10 500 1 11 500 2 12 600 3 12 800 4 12 1400 5 13 1000 6 13 1200 7 13 2200
如果想让汇总行更清晰,还可以给它加个标识列,比如:
# 给原始数据和汇总行分别加标识 df['类型'] = '原始行' summary_df['类型'] = '汇总行' # 合并后排序 combined_df = pd.concat([df, summary_df], ignore_index=True).sort_values(by='Key', ignore_index=True)
这样结果里会多一列区分原始行和汇总行,更直观~
备注:内容来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

