skip to content
barorin&

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

/ 1 min read

Table of Contents

はじめに

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

match 0
0 0 キーワード 1
1 キーワード 2
1 0 キーワード 3
1 キーワード 4
2 キーワード 5

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

match 0 1 2
0 キーワード 1 キーワード 2 NaN
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')