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

如何在Python Pandas中按ID前8位分组后对每组求和筛选?

解决分组内求和范围限定问题

你的问题出在循环里始终引用整个newDF的Hours_Calc列,没有将计算范围限定到当前分组。LeftGroup.groups仅返回分组的键集合,不会自动过滤数据到对应分组。

方法1:使用get_group获取当前分组数据

LeftGroup = newDF.groupby('ID_Left_8')
for g in LeftGroup.groups:
    # 通过分组键获取对应分组的子DataFrame
    group_data = LeftGroup.get_group(g)
    # 统计当前分组内Hours_Calc大于0的数量
    if (group_data['Hours_Calc'] > 0).sum() > 0:
        print(g)

方法2:直接遍历分组对象(更高效)

无需单独遍历groups键,直接遍历groupby对象会返回每个分组的(键, 子DataFrame)元组,代码更简洁:

LeftGroup = newDF.groupby('ID_Left_8')
for g, group_data in LeftGroup:
    if (group_data['Hours_Calc'] > 0).sum() > 0:
        print(g)

补充说明

  • (group_data['Hours_Calc'] > 0)生成布尔Series,.sum()会统计其中True的数量(即大于0的值的个数)
  • 若需求是对大于0的数值本身求和而非统计个数,可修改为group_data[group_data['Hours_Calc'] > 0]['Hours_Calc'].sum() > 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:40:57