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')

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。