반응형
09-14. 리스트 형태의 값 전개 (explode)
DataFrame.explode(column, ignore_index=False)
개요
explode 메서드는 리스트형태의 값을 여러 행으로 전개하는 메서드 입니다.
사용법
기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.explode(column, ignore_index=False)
column : 전개할 리스트형태의 데이터가 있는 열 입니다.
ignore_index : True일 경우 기존 인덱스를 무시하고 0,1,2, ... , n 형태의 인덱스로 변환됩니다.
반응형
예시
먼저 기본적인 사용법 예시를위하여 리스트 형태의 데이터가 포함된 3x3짜리 데이터를 만들어보겠습니다.
data= [[[1,2,3],0,['a','b','c']],[4,[],3],[5,2,['x','y','z']]]
idx = ['row1','row2','row3']
col = ['col1','col2','col3']
df = pd.DataFrame(data = data, index = idx, columns = col)
print(df)
>>
col1 col2 col3
row1 [1, 2, 3] 0 [a, b, c]
row2 4 [] 3
row3 5 2 [x, y, z]
기본적인 사용법
리스트형태의 데이터가 있는 열을 지정함으로써 해당 리스트를 여러행으로 전개할 수 있습니다.
col1열을 전개해보겠습니다.
print(df.explode('col1'))
>>
col1 col2 col3
row1 1 0 [a, b, c] # row1, col1의 [1,2,3]이 전개된 것을 확인할 수 있습니다.<br>
row1 2 0 [a, b, c]
row1 3 0 [a, b, c]
row2 4 [] 3
row3 5 2 [x, y, z]
빈 리스트의 경우 NaN이 반환됩니다.
print(df.explode('col2'))
>>
col1 col2 col3
row1 [1, 2, 3] 0 [a, b, c]
row2 4 NaN 3 # 빈 리스트가 NaN으로 전개된것을 확인할 수 있습니다.<br>
row3 5 2 [x, y, z]
행에 여러개의 리스트 형태의 데이터가 있을 경우 모두 전개합니다.
print(df.explode('col3'))
>>
col1 col2 col3
row1 [1, 2, 3] 0 a
row1 [1, 2, 3] 0 b
row1 [1, 2, 3] 0 c
row2 4 [] 3
row3 5 2 x
row3 5 2 y
row3 5 2 z
여러 열을 동시에 전개할 경우
여러 열을 동시에 전개하려면 해당 열의 같은 행에 있는 리스트 형태의 데이터가 같은 길이를 가져야 합니다.
먼저, 해당 예시를 만족하는 데이터를 만들어 보겠습니다.
data = [[[1,2],['a','b']],[3,'c']]
idx = ['row1','row2']
col = ['col1','col2']
df = pd.DataFrame(data =data, index = idx, columns = col)
print(df)
>>
col1 col2
row1 [1, 2] [a, b]
row2 3 c
row1에 같은 길이를 갖는 리스트 형태의 데이터가 있습니다.
print(df.explode(column=['col1','col2']))
>>
col1 col2
row1 1 a
row1 2 b
row2 3 c
ignore_index인수의 사용
ignore_index=True인 경우 기존 인덱스는 무시되고 0, 1, 2, ... , n 형태의 인덱스로 변경됩니다.
print(df.explode(column=['col1','col2'],ignore_index=True))
>>
col1 col2
0 1 a
1 2 b
2 3 c
반응형
'파이썬완전정복-Pandas DataFrame > 09. 가공' 카테고리의 다른 글
Pandas DataFrame 09-13. 값 변경 (replace) (0) | 2022.01.24 |
---|---|
Pandas DataFrame 09-12. 새 열 할당 (assign) (0) | 2022.01.24 |
Pandas DataFrame 09-11. 피벗해제 (melt) (0) | 2022.01.23 |
Pandas DataFrame 09-10. 피벗생성_스프레드시트 기반 (pivot_table) (0) | 2022.01.23 |
Pandas DataFrame 09-09. 피벗변환 (pivot) (0) | 2022.01.23 |