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

pandas如何筛选groupby sum结果获取指定Code的汇总值

解决方案

你现有代码的问题:

  • 重复三次执行全量groupby求和,属于冗余计算
  • 未从分组结果中提取指定Code对应的汇总值,且后两个print语句漏了字符串和变量间的逗号,会触发语法错误

方法1:一次分组后按索引取值(推荐,计算效率最高)

groupby求和后的结果默认以分组列Code作为索引,是一个pandas Series,只需要计算一次全部分组的和,就可以直接通过索引标签提取对应编码的汇总值:

# 仅执行一次分组求和
sum_by_code = df.groupby('Code')['Total'].sum()

# 提取指定编码的汇总值
subheading_one = sum_by_code['1.1']
subheading_two = sum_by_code['1.2']
subheading_three = sum_by_code['1.3']

# 打印输出,补全缺失的逗号
print('Cost heading 1.1 £: ', subheading_one)
print('Cost heading 1.2 £: ', subheading_two)
print('Cost heading 1.3 £: ', subheading_three)

运行后subheading_one就会返回你预期的编码1.1对应的汇总值300。

注意:如果你的Code列是浮点/整数类型而非字符串类型,取值时去掉引号即可,例如sum_by_code[1.1]。

方法2:先过滤再求和(适合仅需少量编码值的场景)

如果不需要所有编码的汇总结果,可以直接先筛选出对应编码的行再对Total列求和,不需要调用groupby,写法更直观:

subheading_one = df[df['Code'] == '1.1']['Total'].sum()
subheading_two = df[df['Code'] == '1.2']['Total'].sum()
subheading_three = df[df['Code'] == '1.3']['Total'].sum()

参考数据示例:
数据示例截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:54:26