【Pandas最強説2】リストを含むDataFrameを展開するのが超絶簡単だった!
結論
DataFrame.explode(column, ignore_index=False)メソッドを使う事でDataFrameに含まれるリストを展開、中身の値を列へと変換できるようになっていた!(注意:バージョン 0.25.0から)
実際に使ってみる
動作環境
Python 3.6
Pandas 1.1.3
シナリオ
とあるスーパーで売れた商品をスプレッドシートで細かく把握したい。
customer items 0 customer-000 [Milk, Eggs, Bananas] 1 customer-001 [Chicken, Beef, Pork] 2 customer-002 Pasta
ただこのままCSVに変換してしまうと

リストがそのまま1つのセルに。。
そのリストを縦に展開してこうしたい!
customer items 0 customer-000 Milk 0 customer-000 Eggs 0 customer-000 Bananas 1 customer-001 Chicken 1 customer-001 Beef 1 customer-001 Pork 2 customer-002 Pasta
実践
とりあえずimport
import pandas as pd
テストDataframe
df = pd.DataFrame( columns=['customer', 'items'], data=[ ['customer-000', ['Milk', 'Eggs', 'Bananas']], ['customer-001', ['Chicken', 'Beef', 'Pork']], ['customer-002', 'Pasta'] ] )
あとは例のDataFrame.explode(column, ignore_index=False)メソッドを使い展開したいコラムを指定すれば、
exploded_df = df.explode("items")
たったの1行て!?
print(exploded_df)
customer items 0 customer-000 Milk 0 customer-000 Eggs 0 customer-000 Bananas 1 customer-001 Chicken 1 customer-001 Beef 1 customer-001 Pork 2 customer-002 Pasta
欲しかったやつ!
あとお馴染みのdDataFrame.to_csv()で
pandas.pydata.org
exploded_df.to_csv('explode_test.csv')

本当にもうPandasさんありがとうございますっ!!
というわけで、以上DataFrame内のリストを縦に展開する方法でした!
今日も頭のいい先人たちに感謝!
前回の【Pandas最強説】記事はこちら
atsashimipy.hatenablog.com