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

Pandas DataFrame groupby后如何对第三列相同系统值求和

针对按相同系统维度汇总数值求和的需求,可按你当前分组结果的结构选择对应写法:
分组后数据集示例

具体实现

写法1:初始分组阶段直接加入系统维度(推荐)

不需要等第一次groupby出结果后再二次统计,最开始分组时就把系统列加入分组键,一步得到汇总结果,性能更好:

# 替换为实际业务列名即可:
# 原有分组字段:第一次groupby时使用的分组列
# 系统列:第三列存储系统名称的列名
# 待求和数值列:需要做求和统计的数值对应列名
sum_result = df.groupby(["原有分组字段1", "原有分组字段2", "系统列名"])["待求和数值列"].sum().reset_index()

写法2:对已生成的分组结果二次聚合

如果你已经拿到了第一次groupby后的结果数据集,直接对该数据集按系统列再做一次groupby求和即可:

# 假设第一次groupby得到的数据集变量名为df_after_group
sum_result = df_after_group.groupby("系统列名")["待求和数值列"].sum().reset_index()

如果第一次groupby后系统名称不在普通列中,而是在多层索引的某一层,用level参数指定对应层级即可:

# 方式A:按索引层级位置指定(索引从0开始计数,比如第三层级就填2)
sum_result = df_after_group.groupby(level=2)["待求和数值列"].sum()

# 方式B:按索引层级名称指定(更推荐,不需要手动数位置)
sum_result = df_after_group.groupby(level="系统列对应的索引层级名")["待求和数值列"].reset_index()

排查小技巧:如果不清楚当前数据集的列名、索引名,可以先运行两行代码确认:

  • 查看所有普通列:print(df_after_group.columns.tolist())
  • 查看所有索引层级名称:print(df_after_group.index.names.tolist())

内容的提问来源于stack exchange,提问作者Girija Rani Karetla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:45:49