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

Pandas按ID分组条件求和:仅对大于0的Variance计算超支总额

问题原因

你写的代码报错核心有两个问题:

  1. 你先执行了df[df['Variance'] > 0]过滤操作,得到的子DataFrame行数比原df少,后续transform返回的结果长度和原df不匹配,无法直接赋值给原df的新列
  2. 过滤时没有指定只取Variance列,返回的是包含所有列的DataFrame,transform('sum')会对所有列求和,返回多列结果,所以会提示Wrong number of items passed 8, placement implies 1

解决方案

把过滤逻辑放到分组后的聚合规则里即可,不要提前过滤整个DataFrame,正确代码如下:

df['Overspend Total'] = df.groupby('ID')['Variance'].transform(lambda x: x[x > 0].sum())

代码逻辑说明:

  • 按ID分组后,针对每组的Variance序列x,先筛选出大于0的部分再求和
  • transform方法会把每组的求和结果,自动广播到组内的所有行,返回的结果长度和原df完全一致,可以直接赋值为新列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:36:02