前処理を進めていく上で、生データの中にある誤りを訂正したりする際に使う置換に関して。
該当する要素まるごと置換していい場合
“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