Pandas groupby分组后在每组末尾添加数值列求和汇总的方法
Pandas分组后追加分组汇总行实现方案
完整实现代码
import pandas as pd import numpy as np # 构造示例数据 df = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': ['foo', 'foo', 'bar', 'bar'], 'C': [12, 22, 8, 32], 'D': ['California', 'California', 'Rhode Island', 'Rhode Island'] }) # 分组处理函数:单分组内追加汇总行+调整显示格式 def process_group(group): # 仅保留分组首行的分组标识,其余行置空匹配显示要求 group.loc[group.index[1:], 'B'] = '' # 计算分组内所有数值列的总和 sum_val = group.select_dtypes(include=np.number).sum() # 构造汇总行 total_row = pd.Series({ 'A': '', 'B': f"{group.name} Total", 'C': sum_val['C'], 'D': '' }) # 拼接原分组数据和汇总行 return pd.concat([group, total_row.to_frame().T], ignore_index=True) # 按B列分组后应用处理逻辑,输出最终结果 result = df.groupby('B', group_keys=False).apply(process_group).reset_index(drop=True) print(result)
实现说明
- 自动适配数值列求和逻辑:如果有多个数值列需要统计,只需调整汇总行的赋值规则即可批量处理
- 显示格式完全匹配预期:分组内非首行自动隐藏重复的分组标识,汇总行仅保留分组汇总标识和数值总和,其余列留空
- 不打乱原始数据的排列顺序,所有分组和组内数据顺序和原始输入保持一致
内容的提问来源于stack exchange,提问作者San
相关产品推荐
相关产品推荐

