skip to content
barorin&?

pandasのextractallで取得した結果を横持ちのデータに変える

/ 1 min read

はじめに

普通に extractall すると、このようなデータフレームを取得することになります。

match0
00キーワード 1
1キーワード 2
10キーワード 3
1キーワード 4
2キーワード 5

ただ、このままでは使いづらいので、こういう形式に変更したいときのコードです。

match012
0キーワード 1キーワード 2NaN
1キーワード 3キーワード 4キーワード 5

方法

dff = df['hoge'].str.extractall(r'fuga')

dff = dff.unstack()
# NaNを置き換えたいなら、fillnaを追加
# dff = dff.unstack().fillna('なし')

dff.columns = dff.columns.droplevel()

# さらに列名をつけたいなら、
dff.set_axis(['列名0', '列名1', '列名2'], axis='columns')

おまけ

抽出元の df と結合したいとき

df = pd.concat([df, dff], axis='columns')