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

Pandas按Name分组仅当Condition等于New时计算累计和的实现方法

解决方法

你可以先把不符合Condition == 'New'的行对应的Value值替换为0,再按Name分组做累计求和即可,逻辑完全匹配你提的所有规则:

  • 非New条件的行贡献值为0,累加时不会改变之前的累计结果,实现「不符合匹配时累计值保持不变」的要求
  • 分组初始值自动适配:首行是Old则首行贡献值为0,累计初始值为0;首行是New则贡献值为对应Value,累计初始值为该行Value

代码实现

# 写法1:单句实现,无需新增临时列
df['Cumulative Value'] = df.assign(
    calc_val = df['Value'].where(df['Condition'] == 'New', 0)
).groupby('Name')['calc_val'].cumsum()

# 写法2:拆分步骤更易读
# 先生成仅New条件有值的计算列
df['calc_val'] = df['Value'].where(df['Condition'] == 'New', 0)
# 按Name分组累加
df['Cumulative Value'] = df.groupby('Name')['calc_val'].cumsum()
# 可选删除临时计算列
df.drop('calc_val', axis=1, inplace=True)

两种写法效果完全一致,运行后生成的Cumulative Value列和你给出的期望输出完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:36:03