반응형

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
반응형

+ 최근 글