Ini harus dilakukan, perlu groupby()dua kali:
df.groupby(['name', 'day']).sum() \
.groupby(level=0).cumsum().reset_index()
Penjelasan:
print(df)
name day no
0 Jack Monday 10
1 Jack Tuesday 20
2 Jack Tuesday 10
3 Jack Wednesday 50
4 Jill Monday 40
5 Jill Wednesday 110
print( df.groupby(['name', 'day']).sum() )
no
name day
Jack Monday 10
Tuesday 30
Wednesday 50
Jill Monday 40
Wednesday 110
print( df.groupby(['name', 'day']).sum() \
.groupby(level=0).cumsum() )
no
name day
Jack Monday 10
Tuesday 40
Wednesday 90
Jill Monday 40
Wednesday 150
Kerangka data yang dihasilkan dari jumlah pertama diindeks oleh 'name'dan oleh 'day'. Anda dapat melihatnya dengan mencetak
df.groupby(['name', 'day']).sum().index
Saat menghitung jumlah kumulatif, Anda ingin melakukannya dengan 'name', sesuai dengan indeks pertama (level 0).
Terakhir, gunakan reset_indexagar nama diulang.
df.groupby(['name', 'day']).sum().groupby(level=0).cumsum().reset_index()
name day no
0 Jack Monday 10
1 Jack Tuesday 40
2 Jack Wednesday 90
3 Jill Monday 40
4 Jill Wednesday 150