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

pandas按分组计算列累计和且跳过每组前两行的实现方法

正确实现方案

你之前的代码逻辑是先对分组内所有值做累计和,再整体下移2位,累计结果会包含前两行的数值,不符合需求。

正确代码如下:

stack['chained_capacity'] = stack.groupby('Case', group_keys=False)['capacity_gw'].apply(lambda ser: ser.iloc[2:].cumsum())

逻辑说明

  • 按Case字段分组后,对每个分组的capacity_gw序列,仅取从第3行(索引从0开始计数,对应索引值为2)开始的部分计算累计和
  • 分组内前两行的位置会自动填充为NaN,完全匹配你要的输出效果
  • 加group_keys=False是为了避免分组索引污染最终结果的原有多层索引结构

验证输出示例(CES - No Storage分组)

capacity_gw  marginal_cost  chained_capacity
Case                   Category
CES - No Storage       Hydro        4.277016       0.000000               NaN
                       Solar        9.774715       0.000000               NaN
                       Wind        11.881870       0.000000         11.881870
                       Nuclear      5.242805      12.689066         17.124675
                       NGCC         2.101907      25.109150         19.226582
                       NGGT         4.638107      32.703513         23.864689
                       Overflow    35.000000     169.679554         58.864689

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:45:03