小ネタ: PandasでCSV文字列を分割して列にする

PandasでCSV形式の文字列のカラムを、それをカンマ区切りで分割して、別々の列にする方法のメモです。
例えば、1行目なら"123"と"456"と"789"を3つの列に分割します。

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'csv': ['123,456,789', 'abc,def,ghi']})

Series.str.splitメソッドを使うと、3つの列に分割されたDataFrame (tmp) が生成されます。最後にもとのDataFrame (df) に3つの列を追加しています。

  • 第1引数は区切り文字
  • expand引数は列に展開するかどうか (Falseの場合、列は分割されずリストになる)
# カンマ区切りで分割
tmp = df['csv'].str.split(',', expand=True)

# 列を追加
df['value1'] = tmp[0]
df['value2'] = tmp[1]
df['value3'] = tmp[2]