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

在Pandas多级索引DataFrame中使用cumsum方法实现累计计算

实现多级索引DataFrame的分组累计求和

嘿,我完全get到你的需求了——就是要按Stock分组,对Stock_RES列做组内累计求和,得到你示例里WANTED列的效果对吧?用pandas的groupby+cumsum组合就能完美解决,步骤超简单:

核心代码

直接针对你的多级索引DataFrame执行以下代码即可:

# 按Stock(多级索引的第一级)分组,对Stock_RES列做组内累计求和
df['WANTED'] = df.groupby(level='Stock')['Stock_RES'].cumsum()

如果你习惯用索引位置来指定分组键(Stock是第0级索引),也可以这么写:

df['WANTED'] = df.groupby(level=0)['Stock_RES'].cumsum()

为什么这能生效?

  • groupby(level='Stock')会把DataFrame按每个Stock单独拆分成子组,比如ALKM、ANDI、APPZ各自成组;
  • cumsum()会在每个子组内从第一条记录开始,逐步累加Stock_RES的值,正好和你给出的WANTED列结果完全匹配(微小的浮点差异是正常的精度问题)。

验证示例(拿ALKM组举例)

  • 第一条记录:-53.85 → 累计和就是-53.85
  • 第二条记录:-53.85 + 111.11 = 57.26
  • 第三条记录:57.26 + 233.33 = 290.59(和你的290.60是浮点精度导致的细微差别)
  • 后续记录的累加逻辑也完全一致,完美符合预期。

额外提示(如果还没设置多级索引)

如果你的原始数据还没把Stock和Date设为多级索引,先执行这一步:

df = df.set_index(['Stock', 'Date'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:12:00