Pandas : 조건에 따른 데이터프레임 누적합 계산

728x90

 

import pandas as pd
d = {'NAME': ['PIKACHU', 'GYARADOS', 'LAPRAS', 'Rattata', 'ZAPDOS'],
     'NUM': [10, 250, 10, 20, 700],
    'ENERGY' : [1, 1, 1, 1, 1]}
df = pd.DataFrame(data=d)
df
  NAME NUM ENERGY
0 PIKACHU 10 1
1 GYARADOS 250 1
2 LAPRAS 10 1
3 Rattata 20 1
4 ZAPDOS 700 1

누적합(cumsum) 수행

  • NUM이 10일 때까지 ENERGY의 값을 누적하여 저장
  • NUM이 10이 되는 순간 다시 cumsum을 reset하고 재 누적합 계산 시작
df['cumsum'] = df.groupby((df.NUM == 10).cumsum()).ENERGY.cumsum()
df
  NAME NUM ENERGY cumsum
0 PIKACHU 10 1 1
1 GYARADOS 250 1 2
2 LAPRAS 10 1 1
3 Rattata 20 1 2
4 ZAPDOS 700 1 3

 

 

728x90