Pandasでreplaceメソッドを使ったテキスト置換

前処理を進めていく上で、生データの中にある誤りを訂正したりする際に使う置換に関して。

該当する要素まるごと置換していい場合

“typeA” を “typeB” に置き換えるなど、要素をまるごと置換していい場合は下記の通り。

import pandas as pd
df = pd.DataFrame({'ID': [1, 2, 3, 3, 4, 5, 5],
                   'Name': ['Noto', 'Hisakawa', 'Kouda', 'Hayashibara', 'sakamoto', 'tamura', 'mitsuishi'],
                   'score':[100, 50, 80, 50, 100, 70, 55]})
df

	ID	Name	score
0	1	Noto	100
1	2	Hisakawa	50
2	3	Kouda	80
3	3	Hayashibara	50
4	4	sakamoto	100
5	5	tamura	70
6	5	mitsuishi	55
df.replace('mitsuishi', 'Tsukino')

	ID	Name	score
0	1	Noto	100
1	2	Hisakawa	50
2	3	Kouda	80
3	3	Hayashibara	50
4	4	sakamoto	100
5	5	tamura	70
6	5	Tsukino	55

# 特定の列を指定しても大丈夫
df['Name'].replace('mitsuishi', 'Tsukino', inplace=True)
df

	ID	Name	score
0	1	Noto	100
1	2	Hisakawa	50
2	3	Kouda	80
3	3	Hayashibara	50
4	4	sakamoto	100
5	5	tamura	70
6	5	Tsukino	55

正規表現での置換

実務上だと、要素をまるごと置換するのが難しいケースや都合が悪いケースが多々ある。

その場合は引数を指定し、正規表現を使って置換を行う。
第1引数は正規表現、第2引数でも正規表現を使いたい場合は「raw文字列記法」を使う。(第1引数には「r」は不要だが、付けても動作した)。

df.replace('(Tsuki).*', r'\1 Ni Kawatte Oshiokiyo', regex=True) 

ID	Name	score
0	1	Noto	100
1	2	Hisakawa	50
2	3	Kouda	80
3	3	Hayashibara	50
4	4	sakamoto	100
5	5	tamura	70
6	5	Tsuki Ni Kawatte Oshiokiyo	55

参考文献

このサイトの主
投稿を作成しました 98

関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る