以前の記事で、pandasのDataFrameの列中に含まれている配列を行に展開する方法について書きました。
参考: pandasのDataFrameのappendは遅い
お恥ずかしながらこの記事を書いた時は知らなかったのですが、pandasの version 0.25.0 から、専用のメソッドが準備されていて、
先述の記事のような面倒なことはしなくて良くなっています。
そのメソッドが pandas.DataFrame.explode です。
使い方は簡単で、行に展開したい、つまり配列を含んだ列の名前を渡すだけです。
実際にやってみます。
import pandas as pd
df = pd.DataFrame(
{'A': [[1, 2, 3], 'foo', [], [3, 4]], 'B': 1, "C": [1, 2, 3, 4]})
print(df)
"""
A B C
0 [1, 2, 3] 1 1
1 foo 1 2
2 [] 1 3
3 [3, 4] 1 4
"""
df_explode = df.explode('A')
print(df_explode)
"""
A B C
0 1 1 1
0 2 1 1
0 3 1 1
1 foo 1 2
2 NaN 1 3
3 3 1 4
3 4 1 4
"""
めちゃくちゃお手軽ですね。
前の記事で書いていたようにappendの遅さに文句を言ったり、自分で配列を作るコードを書いたりと言ったことは全くしなくて良くなりました。