スポンサーリンク

DataFrameで部分一致で文字列を置換

下記のように、replace()を使う場合は、完全一致であることに注意が必要です。

dataReplace = data.replace('before', 'after')

正規表現でreplace()を使うことで、部分一致で置換ができるようになります。
regex=Trueを指定して、正規表現でreplace()を使うことができます。
dataReplace = data.replace('before', 'after', regex=True)

特定の列の文字列を正規表現で置換する場合には、下記のように書きます。
下記の場合は、col1の列の'before'を'after'に置換します。
data.col1 = data.col1.replace('before', 'after', regex=True)

スポンサーリンク

サンプルコード

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
1before1,1,1
2,2before2,2
3,3,3before3

下記がサンプルコードになります。
 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import pandas as pd

data = pd.read_csv('in.txt', names=('col1', 'col2', 'col3'))
print(data)

dataReplace = data.replace('before', 'after')
print(dataReplace)

dataReplace = data.replace('before', 'after', regex=True)
print(dataReplace)

data.col1 = data.col1.replace('before', 'after', regex=True)
print(data)

下記が実行結果になります。
 $ ./sample.py 
       col1      col2      col3
0  1before1         1         1
1         2  2before2         2
2         3         3  3before3
       col1      col2      col3
0  1before1         1         1
1         2  2before2         2
2         3         3  3before3
      col1     col2     col3
0  1after1        1        1
1        2  2after2        2
2        3        3  3after3
      col1      col2      col3
0  1after1         1         1
1        2  2before2         2
2        3         3  3before3

スポンサーリンク