はじめに
普通に 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')