groupby를 이용하여 여러 행을 하나의 행으로 요약 (multiple rows convert to single row)
2021. 10. 2. 10:51ㆍ코딩/Python
반응형
안녕하세요 여러분, 코봉이 입니다!
오늘은 pandas의 groupby 를 이용한 그룹핑 방법 중 하나를 알아볼 텐데요.
데이터를 정리하다 보면 같은 값을 가지는 여러 행을 merge 하여 한 행으로 정리해야될 일이 있으실 겁니다.
그럴 때, 꼭 유용하게 쓰셨으면 하여 작성합니다!
Korea & seoul 에 사는 친구들이 5명인데, 굳이 여러 행으로 볼 필요 있나요? 한 줄로 합쳐야 용량 관점에서 더 이점이 있을 때도 있겠죠?
import pandas as pd
path = 'C:/Users/dataset/'
data = pd.read_csv(path + 'data3.csv') ## dataset read ##
print(data)
country city name
0 Korea seoul brian
1 Korea seoul json
2 Korea seoul baker
3 Korea seoul henna
4 Korea seoul harry
5 U.S.A sanfransisco zoe
6 U.S.A sanfransisco jack
7 U.S.A sanfransisco rihanna
먼저 pandas를 이용하여 데이터셋을 읽어옵니다.
오늘의 핵심!
groupby를 이용하여 어디까지 그룹핑을 해줄 건지 정해준 다음, 설정된 그룹 내에서 join을 활용하여 하나로 묶어주게 됩니다.
group = data.groupby(['country', 'city'])['name'].apply(', '.join)
## country와 city까지만 그룹핑을하고, 그에 해당하는 name 값을 가져오겠다 ##
print(group)
country city
Korea seoul brian, json, baker, henna, harry
U.S.A sanfransisco zoe, jack, rihanna
Name: name, dtype: object
짜잔~ 원하는 모양이 나왔죠~?
해당 결과를 dataframe으로 활용이 필요할 경우, 마지막에 .reset_index()를 추가하면 dataframe 형식으로 활용할 수 있습니다!
reset_index()에 대한 내용은 아래 글에서 좀 더 상세히 확인하시면 되겠습니다.
2021.10.02 - [python] - pandas groupby output convert to DataFrame
reset_index()를 추가하면 결과는 이렇게 아름답게 나오게 되고, 해당 결과는 DataFrame 형식으로 이후 유용하게 활용할 수 있는 변수가 됩니다.
group = data.groupby(['country', 'city'])['name'].apply(', '.join).reset_index()
## group 결과를 dataframe으로 계속 활용해야할 경우 ##
print(group)
country city name
0 Korea seoul brian, json, baker, henna, harry
1 U.S.A sanfransisco zoe, jack, rihanna
이상, 많은 도움되셨으면 좋겠습니다^^
반응형
'코딩 > Python' 카테고리의 다른 글
Python Download All version (파이썬 다운로드 방법) (0) | 2022.02.02 |
---|---|
pandas groupby output convert to DataFrame (0) | 2021.10.02 |
파이썬 두 가지 DataFrame의 다른 행 찾기 (find difference row between two dataframes by python) (0) | 2021.09.29 |
python으로 로또 1등 번호 생성하기 (동행복권) (0) | 2021.09.29 |
Python Pandas isna(), nan Row 찾기 (0) | 2021.07.26 |