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

使用Python Pandas按年月分组对指定列计算分组内逐行累计乘积

实现代码

你已经完成了A、B列加1的操作,接下来直接按年月分组调用累计乘积方法即可:

# 方式1:新增列保存累计乘积结果,保留原始加1后的A、B值
df[['A_cumprod', 'B_cumprod']] = df.groupby(df.index.to_period('M'))[['A', 'B']].cumprod()

# 方式2:直接覆盖原有的A、B列为累计乘积结果
# df[['A', 'B']] = df.groupby(df.index.to_period('M'))[['A', 'B']].cumprod()

结果验证

以你举例的2013年2月的A列计算为例,代码输出结果和手动计算完全一致:

日期加1后的A值累计乘积(A_cumprod)手动计算逻辑
2013-02-261.2119571.2119571.211957
2013-02-270.6253460.7579201.211957 * 0.625346
2013-02-280.3579860.2713491.211957 * 0.625346 * 0.357986

2013年3月及之后的月份会自动重新开始累计乘积计算,完全匹配需求。

逻辑说明

  • df.index.to_period('M') 会将datetime类型的行索引转换为「年-月」格式的周期值,作为分组的依据,确保每个自然月为一个独立分组
  • groupby() 后调用cumprod()方法,会在每个分组内部按行的原始顺序计算累计乘积,自动保持原表的索引和行数不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:04