Developer MJ Story

[Python] Dataframe Groupby Multi Index 합 구하기 본문

Software/Python&Ruby

[Python] Dataframe Groupby Multi Index 합 구하기

집근처 2018. 1. 18. 17:15
반응형

안녕하세요.


집근처 개발자 입니다.


오늘은 Pyton DataFrame의 고급 기술인  gruopby의 사용법 중 Multi Level Index에서 합을 구하는 방법을 알려드리겠습니다.


아래와 같은 DataFrame이 있고,

 name

number

value

A 280372080743000 1
B 1316165527660 1
25346724082300 1
108207143366000 2
123330743073000 1
174176341471000 3
200204182164000 1
223142021803000 1
224032018487000 1
310421238379000 1
326054253084000 1
330164855184000 1
362163568567000 3
364478720866000 1
408020042415000 2
540574871130000 1
562831214873000 2
585540722726000 1
625068715424000 1
684630620544000 4
716057534724000 1
721735485867000 1
755537511287000 4
781848786682000 5
860572133301000 2
885780683263000 2
C 160536473687000 15
310421238379000 28
532536233280000 1
605446013544000 18
883534150403000 86


이런 Data를 아래와 같이 만드는 방법 입니다.

A 1
B 44
C 148


단순 gruopby해서 sum()을 하면 전체 value의 합을 출력합니다.


이는 Multi level index로 구성된 dataframe이기 때문입니다.

이 문제를 해결하려면 해당 column을 다시 gruopby로 묶어서 sum을 구하면 원하는 결과를 얻을 수 있습니다.


code로 보면 아래와 같습니다.


df.groupby(['name']).sum()


너무 간단하죠.

name columns으로 기준으로 groupby해서 sum() 하면 됩니다.


이는 사실 df.groupby(['name', 'number'])를 실행 한 결과가 위의 dataframe이다.

두 레벨의 group으로 묶어서 multi level이 되었고, 이 multi level dataframe의 값들을 name 기준으로 sum() 하기위해 name 기준의 group으로 묶은 것이다.


반응형