제목만 보면 어떤 말인지 이해하기 어려울 수 있으나,
아래의 예시 데이터처럼 값에 리스트가 들어가 있는 경우, 각 리스트 내 요소를 전개하여 따로 레코드를 생성해 주는 방법에 대한 것입니다.
이럴 때는 pandas 의 explode() 함수를 사용해주면 됩니다.
( pandas explode document 링크 )
1. 예시 데이터 생성
import pandas as pd
data = [[3, 1, ['가', '나', '다']], [4, 0, ['라', '마', '바']], [5, 1, ['아', '자', '차']]]
col_names = ['x1', 'x2', 'x3']
df = pd.DataFrame(data=data, columns=col_names)
df
2. explode 사용
'x3'에 리스트 형태의 값이 들어 있으므로 리스트의 각 요소를 전개하여 새로운 행으로 생성하겠습니다.
df.explode('x3')
explode() 를 사용하면 위와 같은 결과를 얻을 수 있습니다.
3. explode 에서 ignore_index 사용
위의 결과 데이터를 보면 각 레코드의 인덱스는 0, 0, 0, 1, 1, 1, 2, 2, 2 라고 되어있습니다.
만약 이를 0~9까지 순서대로 인덱싱 하려면 explode() 함수 사용시에 ignore_index 를 사용해줍니다.
df.explode('x3', ignore_index=True)
'[Python] 연습' 카테고리의 다른 글
[python] matplotlib 한글 폰트 적용하기 (0) | 2023.04.30 |
---|---|
[python] 한국어 띄어쓰기 처리 (0) | 2022.11.13 |
[python] json 파일 data frame 으로 읽기 (0) | 2022.11.11 |
[python] 프로그래머스 신고결과받기 (0) | 2022.10.29 |
[python] 프로그래머스 성격유형검사하기 (0) | 2022.10.28 |