Использование groupby для вычисления суммы в pandas фрейме данных - PullRequest
2 голосов
/ 01 апреля 2020

У меня есть фрейм данных, ниже которого я намеревался вычислить совокупную сумму:

df_a = pd.DataFrame({'Location': ['SR01','SR01','SR02','SR01','SR01','SR02'],
                 'User':['101','101','101','102','102','102'],
                 'Year':['2018','2019','2019','2018','2019','2019'],
                 'Month':[12, 1, 2, 12, 1, 2],
                 'Qty':[10, -2, 3, 4, -5, 6]})

Мой предполагаемый результат такой, как показано ниже:

df_a = pd.DataFrame({'Location': ['SR01','SR01','SR02','SR01','SR01','SR02'],
                 'User':['101','101','101','102','102','102'],
                 'Year':['2018','2019','2019','2018','2019','2019'],
                 'Month':[12, 1, 2, 12, 1, 2],
                 'Qty':[10, -2, 3, 4, -5, 6],
                'CumSum': [10, 8, 3, 4, -1, 6]})

Однако, когда я использую df_a.groupby(['Location','User','Year','Month']).sum().groupby(level=1).cumsum(), я получите вместо этого:

df_a = pd.DataFrame({'Location': ['SR01','SR01','SR02','SR01','SR01','SR02'],
                 'User':['101','101','101','102','102','102'],
                 'Year':['2018','2019','2019','2018','2019','2019'],
                 'Month':[12, 1, 2, 12, 1, 2],
                 'Qty':[10, 8, 4, -1, 11, 5]})

Может кто-нибудь объяснить, почему мой код не работает, и решить эту проблему?

1 Ответ

1 голос
/ 01 апреля 2020

Вам нужно

df_a.groupby(['Location','User']).Qty.cumsum()
0    10
1     8
2     3
3     4
4    -1
5     6
Name: Qty, dtype: int64

df_a['cumSum']= df_a.groupby(['Location','User']).Qty.cumsum()
...