pandas / DataFrame の中身の文字列を一括で分割して別の列として定義する
pandasで、特定の列の(中身の)文字列を分割して使いたいときがある。
例えばこんな表があったとして、
NumName
|
|
---|---|
0 | a001_name1 |
1 | a002_name2 |
2 | a003_name3 |
↓ こんな風にしたい
NumName
|
num
|
name
|
|
---|---|---|---|
0 | a001_name1 | a001 | name1 |
1 | a002_name2 | a002 | name2 |
2 | a003_name3 | a003 | name3 |
この処理をするのに、以前はこんなもっさりしたコードを書いていた。
分割したい列の中身を取り出して、1行ずつ分割処理するやり方だ。
でも下のようにたった2行で書けることがわかった。
for を使わないので処理速度も上がるかもしれない。(pandasが裏で効率よくやってくれているはず)
pandas公式ページ参照:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.split.html
ちなみ1行目にある .str が便利なやつで、これを使うと文字列の処理を列単位で一括でやってくれる。文字列操作 replace() もご覧の通り。
NumName
|
num
|
name
|
NumPlace
|
|
---|---|---|---|---|
0 | a001_name1 | a001 | name1 | a001_place1 |
1 | a002_name2 | a002 | name2 | a002_place2 |
2 | a003_name3 | a003 | name3 | a003_place3 |
pandasのおかげで本当に仕事がはかどる。