Перетворення стовпця зі списками

Переформатування даних у pandas

Maria Eugenia Inzaugarat

Data Scientist

Стовпці, схожі на списки

DataFrame зі стовпцем, що містить списки

Переформатування даних у pandas

Перетворення стовпців-списків

Стрілка від DataFrame до розгорнутого DataFrame

Переформатування даних у pandas

Метод .explode()

Стрілка від DataFrame до розгорнутого DataFrame

Метод explode

Переформатування даних у 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_explode = cities['zip_code'].explode()
cities_explode
0    90001
0    90004
0    90008
1    28001
1    28004
1    28005
2    10010
2    10170
Переформатування даних у pandas

Розгортання стовпця

cities[['city', 'country']]
Переформатування даних у pandas

Розгортання стовпця

cities[['city', 'country']].merge(cities_explode,                                  )
Переформатування даних у pandas

Розгортання стовпця

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

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

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...