리스트형 열 변환

pandas로 데이터 재구조화하기

Maria Eugenia Inzaugarat

Data Scientist

리스트형 열

리스트가 들어 있는 열이 있는 DataFrame

pandas로 데이터 재구조화하기

리스트형 열 변환

DataFrame에서 explode DataFrame으로 향하는 화살표

pandas로 데이터 재구조화하기

.explode() 메서드

DataFrame에서 explode DataFrame으로 향하는 화살표

explode 메서드

pandas로 데이터 재구조화하기

열 폭발(explode)

cities
          city  country               zip_code
0  Los Angeles      USA  [90001, 90004, 90008]
1       Madrid    Spain  [28001, 28004, 28005]
2        Rabat  Morocco         [10010, 10170]
pandas로 데이터 재구조화하기

열 폭발(explode)

cities_explode = cities['zip_code'].explode()
cities_explode
0    90001
0    90004
0    90008
1    28001
1    28004
1    28005
2    10010
2    10170
pandas로 데이터 재구조화하기

열 폭발(explode)

cities[['city', 'country']]
pandas로 데이터 재구조화하기

열 폭발(explode)

cities[['city', 'country']].merge(cities_explode,                                  )
pandas로 데이터 재구조화하기

열 폭발(explode)

cities[['city', 'country']].merge(cities_explode, left_index=True, right_index=True)
          city  country zip_code
0  Los Angeles      USA    90001
0  Los Angeles      USA    90004
0  Los Angeles      USA    90008
1       Madrid    Spain    28001
1       Madrid    Spain    28004
1       Madrid    Spain    28005
2        Rabat  Morocco    10010
2        Rabat  Morocco    10170
pandas로 데이터 재구조화하기

DataFrame에서 열 폭발(explode)

cities_explode = cities.explode('zip_code')
cities_explode
          city  country zip_code
0  Los Angeles      USA    90001
0  Los Angeles      USA    90004
0  Los Angeles      USA    90008
1       Madrid    Spain    28001
1       Madrid    Spain    28004
1       Madrid    Spain    28005
2        Rabat  Morocco    10010
2        Rabat  Morocco    10170
pandas로 데이터 재구조화하기

DataFrame에서 열 폭발(explode)

cities_explode.reset_index(drop=True, inplace=True)
          city  country zip_code
0  Los Angeles      USA    90001
1  Los Angeles      USA    90004
2  Los Angeles      USA    90008
3       Madrid    Spain    28001
4       Madrid    Spain    28004
5       Madrid    Spain    28005
6        Rabat  Morocco    10010
7        Rabat  Morocco    10170
pandas로 데이터 재구조화하기

빈 리스트

cities_new
          city  country               zip_code
0  Los Angeles      USA  [90001, 90004, 90008]
1       Madrid    Spain                     []
2        Rabat  Morocco         [10010, 10170]
cities_new.explode('zip_code')
          city  country zip_code
0  Los Angeles      USA    90001
0  Los Angeles      USA    90004
0  Los Angeles      USA    90008
1       Madrid    Spain      NaN
2        Rabat  Morocco    10010
2        Rabat  Morocco    10170
pandas로 데이터 재구조화하기

연산 체이닝

cities
          city  country             zip_code
0  Los Angeles      USA  90001, 90004, 90008
1       Madrid    Spain  28001, 28004, 28005
2        Rabat  Morocco         10010, 10170
pandas로 데이터 재구조화하기

연산 체이닝

cities['zip_code'].str.split(',', expand=True)
       0       1       2
0  90001   90004   90008
1  28001   28004   28005
2  10010   10170    None
pandas로 데이터 재구조화하기

연산 체이닝

cites.assign(zip_code=                                )
pandas로 데이터 재구조화하기

연산 체이닝

cites.assign(zip_code=cities['zip_code'].str.split(','))
pandas로 데이터 재구조화하기

연산 체이닝

cites.assign(zip_code=cities['zip_code'].str.split(',')).explode('zip_code')
          city  country zip_code
0  Los Angeles      USA    90001
0  Los Angeles      USA    90004
0  Los Angeles      USA    90008
1       Madrid    Spain    28001
1       Madrid    Spain    28004
1       Madrid    Spain    28005
2        Rabat  Morocco    10010
2        Rabat  Morocco    10170
pandas로 데이터 재구조화하기

연습해 봅시다!

pandas로 데이터 재구조화하기

Preparing Video For Download...