Python/NumPy | Pandas

[Pandas] explode - 데이터형이 리스트인 컬럼 전개

비번변경 2024. 2. 19. 22:42

개요

아래와 같이 데이터형이 리스트인 컬럼을 포함하는 데이터프레임이 있다고 하자.

df = pd.DataFrame({'A': [[0, 1, 2], 'foo', [], [3, 4]],
                   'B': ['a', 'b', 'c','d'],
                   'C': [['a', 'b', 'c'], np.nan, [], ['d', 'e']],
                   })

리스트인 컬럼을 여러 행으로 펼쳐서 A와 B가 1 : 1 매핑이 되도록 변경하고 싶다. 방법을 알아본다.

 

 

DataFrame.explode

 explode 함수는 리스트와 유사한 각 요소를 행으로 변환한다.

DataFrame.explode(column, ignore_index=False)

column 매개변수에는 분할할 컬럼을 지정하는데 단일 문자열이나 튜플로 지정할 수 있다. 단, 튜플로 지정했을 때는 동일한 행에 있는 각 컬럼의 데이터 길이가 동일해야 한다.

 

 

예시

개요의 데이터프레임에 대해 explode를 사용한 결과를 확인한다.

display(df.explode('A'))

A 컬럼 값의 길이만큼 행이 늘어난 것을 확인할 수 있다. 참고로 리스트가 비어있는 경우에는 NaN이 반환된다.

 

여러 컬럼을 전개하면

display(df.explode(['A', 'C']))

리스트의 첫 번째 원소끼리, 두 번째 원소끼리, 그리고 마지막 원소끼리 매핑되는 모습을 확인할 수 있다. 따라서 단일 컬럼을 전개한 결과와 여러 컬럼을 전개한 결과의 데이터프레임 크기는 동일하다.

 

 

참고 문서

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.explode.html

https://trading-for-chicken.tistory.com/101

https://wikidocs.net/158541