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のおかげで本当に仕事がはかどる。