You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现pandas groupby后同时输出明细数据与sum聚合求和结果

pandas groupby同时输出明细与聚合求和结果的实现方案

场景1:每条明细行附带所属分组的求和结果

使用groupby的transform方法实现,该方法会返回与原始数据行数一致的聚合结果,直接作为新列追加到原始表即可:

import pandas as pd

# 示例原始数据,可替换为你的实际数据
df = pd.DataFrame({
    '分组列': ['组1', '组1', '组2', '组2', '组2'],
    '明细项': ['项1', '项2', '项3', '项4', '项5'],
    '待求和列': [10, 20, 15, 5, 20]
})

# 追加分组求和列
df['分组求和结果'] = df.groupby('分组列')['待求和列'].transform('sum')
print(df)

场景2:分组明细后紧跟分组合计行(类Excel分类汇总效果)

遍历每个分组,依次拼接明细行与当前分组的汇总行即可实现,还可按需追加全局总合计:

result = pd.DataFrame()
# 遍历所有分组
for group_name, group_df in df.groupby('分组列'):
    # 拼接当前分组的明细
    result = pd.concat([result, group_df])
    # 拼接当前分组的汇总行
    sum_row = pd.DataFrame({
        '分组列': [group_name],
        '明细项': [f'{group_name}合计'],
        '待求和列': [group_df['待求和列'].sum()],
        '分组求和结果': [group_df['待求和列'].sum()]
    })
    result = pd.concat([result, sum_row])

# 可选:追加全局总合计行
total_row = pd.DataFrame({
    '分组列': [''],
    '明细项': ['全局总合计'],
    '待求和列': [df['待求和列'].sum()],
    '分组求和结果': [df['待求和列'].sum()]
})
result = pd.concat([result, total_row]).reset_index(drop=True)
print(result)

内容的提问来源于stack exchange,提问作者BIllyLiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:04