Pandas对1个索引而不是其他3个索引的累积和



我有一个包含4个变量DIVISION, QTR, MODEL_SCORE, MONTH的数据框架,变量X的总和由这4个变量聚合。

我想按DIVISION、QTR和MODEL SCORE对数据进行有效分区,并保持一个从MONTH FIELD顺序从小到大的运行总订单。这个想法是,如果它得到其他3列的新排列,它将重置

df = df.groupby(['DIVISION','MODEL','QTR','MONTHS'])['X'].sum()

我在

df['cumsum'] = df.groupby(level=3)['X'].cumsum()

尝试了所有的数字,我能想到的水平参数。它似乎可以按我想要的任何方式工作。

编辑:我知道下面的格式不理想,但基本上只要唯一改变的变量是MONTH,累积总和将继续,但任何其他变量都会导致它重置。

DIVSION QTR  MODEL  MONTHS  X  CUMSUM
A   1    1       1 10      10
A   1    1       2 20      30
A   1    2       1  5       5

很抱歉给你带来这么多麻烦,我相信答案比我想的要简单得多。

df = df.groupby(['DIVISION','MODEL','QTR','MONTHS'])['X'].sum()

我应该重置索引,我不想要一个多索引,这似乎已经工作了。

df = df.reset_index()
df['cumsum'] = df.groupby(['DIVISION','MODEL','QTR'])['X'].cumsum()

最新更新