【发布时间】:2021-10-13 20:02:25
【问题描述】:
我有一个包含 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()
尝试了所有我能在 level 参数中想到的数字。它似乎能够以我想要的方式以外的任何方式工作。
编辑:我知道下面的格式不理想,但基本上只要唯一的变量变化是 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
【问题讨论】:
-
最好能提供小样本数据和预期输出。
-
复制/粘贴
print(df.head().to_string())的输出,应该够了。 -
.sum(['X'])并没有按照你的想法去做。在groupby sum 中,您的代码等同于df = df.groupby(['DIVISION','MODEL','QTR','MONTHS']).sum(numeric_only=['X']),而['X']是一个非空列表是真实的。 -
我编辑了你的数据框。请检查我是否没有弄错。
-
@HenryEcker 我想我知道你的意思现在我已经编辑了。