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

Python实现类似SQL循环字段生成分组汇总表方法求教

Python实现指定字段的分组汇总+总计功能

你要实现的操作在Pandas里叫做分组聚合+追加总计行,对应你熟悉的SQL循环字段分组查询+union all总计的逻辑。下面直接给你针对这个DataFrame的实现代码和说明:

首先先确认你的DataFrame构造代码(方便复现):

import pandas as pd

data = {
    'COL1': ['aaa', 'aaa', 'aaa', 'aaa', 'bbb'],
    'COL2': ['a1234', 'a2345', 'a3456', 'a5678', 'a5678'],
    'COL3': ['b1234', 'b2345', 'b3456', 'b5678', 'b5678'],
    'COL4': [5, 10, 15, 20, 25]
}
df = pd.DataFrame(data)

接下来是核心实现代码:

# 定义要循环的字段列表,和你SQL里的写法一致
fields = ['COL2', 'COL3']

# 循环每个目标字段
for field in fields:
    print(f"===== 针对{field}的分组汇总结果 =====")
    # 1. 按COL1和当前字段分组,对COL4求和
    grouped = df.groupby(['COL1', field], as_index=False)['COL4'].sum()
    # 2. 计算总计行:COL1为'总计',当前字段为'所有',COL4取总和
    total_row = pd.DataFrame({
        'COL1': ['总计'],
        field: ['所有'],
        'COL4': [df['COL4'].sum()]
    })
    # 3. 合并分组结果和总计行
    result = pd.concat([grouped, total_row], ignore_index=True)
    print(result)
    print("\n")

代码说明:

  • groupby(['COL1', field], as_index=False):对应SQL里的GROUP BY COL1, 目标字段,as_index=False保证分组后的字段不会变成索引,保持列格式
  • ['COL4'].sum():对应SQL里的SUM(COL4),你可以根据需求改成其他聚合函数(比如mean()取平均、count()计数)
  • pd.concat([grouped, total_row]):对应SQL里把分组结果和总计行用UNION ALL合并的逻辑
  • 循环fields列表:和你SQL里循环字段执行查询的逻辑完全对应

运行后你会得到每个字段的分组汇总+总计结果,比如针对COL2的输出是:

===== 针对COL2的分组汇总结果 =====
  COL1   COL2  COL4
0  aaa  a1234     5
1  aaa  a2345    10
2  aaa  a3456    15
3  aaa  a5678    20
4  bbb  a5678    25
5  总计    所有    75

如果你的聚合需求不是求和,只需要把.sum()改成对应的聚合方法即可,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:01:45