Bunu yapmalı, groupby()
iki kez gerek :
df.groupby(['name', 'day']).sum() \
.groupby(level=0).cumsum().reset_index()
Açıklama:
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
İlk toplamdan elde edilen veri çerçevesi, tarafından 'name'
ve tarafından indekslenir 'day'
. Yazdırarak görebilirsiniz
df.groupby(['name', 'day']).sum().index
Kümülatif toplamı hesaplarken, bunu 'name'
ilk endekse (seviye 0) karşılık gelecek şekilde yapmak istersiniz .
Son olarak, reset_index
isimleri tekrar ettirmek için kullanın.
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