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

Pandas按DIVISION等3字段分组重置的MONTH维度累计求和问题

累计和计算错误解决方案

问题根因

你之前使用groupby(level=3)计算累计和的逻辑错误:level=3对应多级索引的第4个字段MONTHS,相当于按月份分组计算累计和,不符合你要求的「按DIVISION、MODEL、QTR三个字段分区,分区字段任意变化就重置累计」的逻辑。


方案1:转普通DataFrame计算(可读性更高)

  1. 聚合时直接生成非多级索引的DataFrame
df_agg = df.groupby(['DIVISION','MODEL','QTR','MONTHS'], as_index=False)['X'].sum()
  1. 按分区字段+月份排序,保证月份从小到大的累计顺序
df_agg = df_agg.sort_values(by=['DIVISION','MODEL','QTR','MONTHS'])
  1. 按三个分区字段分组,组内计算累计和
df_agg['CUMSUM'] = df_agg.groupby(['DIVISION','MODEL','QTR'])['X'].cumsum()

方案2:保留多级索引结构计算

如果需要保留聚合后的多级索引结构,直接指定前三个索引层级作为分组键即可,你的聚合代码生成的多级索引顺序为[DIVISION, MODEL, QTR, MONTHS],对应level 0~3,因此取前三个level分组:

# 你的原聚合代码,得到多级索引Series
df = df.groupby(['DIVISION','MODEL','QTR','MONTHS'])['X'].sum()
# 按前三个索引层级分组,组内计算累计和
df['cumsum'] = df.groupby(level=[0,1,2]).cumsum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:57:02