リスト状の列を変換する

pandas でデータを整形する

Maria Eugenia Inzaugarat

Data Scientist

リスト状の列

リストを含む列のあるDataFrame

pandas でデータを整形する

リスト状の列を変換する

DataFrameからexplode後のDataFrameへの矢印

pandas でデータを整形する

.explode() メソッド

DataFrameからexplode後の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 でデータを整形する

列を展開する(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で列を展開する

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 でデータを整形する

Passons à la pratique !

pandas でデータを整形する

Preparing Video For Download...