이 작업을 수행해야하며 groupby()두 번 필요합니다 .
df.groupby(['name', 'day']).sum() \
.groupby(level=0).cumsum().reset_index()
설명:
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
첫 번째 합계의 결과 인 데이터 프레임은 'name'및에 의해 인덱싱 됩니다 'day'. 인쇄하여 볼 수 있습니다
df.groupby(['name', 'day']).sum().index
누적 합계를 계산할 때 'name'첫 번째 인덱스 (수준 0)에 해당하는으로 계산할 수 있습니다 .
마지막으로을 사용 reset_index하여 이름을 반복하십시오.
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