2016-03-29 6 views
5

私は以下のパンダのデータフレームを持っています。 idsearch_termpandas str.replaceの正規表現を避ける

id  search_term 
37651 inline switch 

私は:

train['search_term'] = train['search_term'].str.replace("in."," in. ") 

は、上記のデータセットが影響を受けないことを期待し、私は、このデータセットの見返りに取得簡略化のために、それは2つだけの列があるとします:in.によって置き換えられineがREPLACであるinl手段

id  search_term 
37651 in. in. switch 

in.によって編集されています。正規表現を使用している場合と同様に、dotは任意の文字を意味します。 、文字通り、in.in.に置き換えられますが、ドットが続いていないinはのように、そのままであるように、私は最初のコマンドを再表示するにはどうすればよい

:ここ

a = 'inline switch' 
a = a.replace('in.','in. ') 

a 
>>> 'inline switch' 
+0

あなたが実際の所望の出力は何ですか? –

+0

申し訳ありませんが、私は文字通り 'ドット'を置き換えたいです。私は 'dot'の正規表現の良いポストを見つけたので、以下の答えを投稿しました。問題は、データフレーム内のstr.replace()が正規表現 –

答えて

1

.を脱出してみてください。

import pandas as pd 

df = pd.DataFrame({'search_term': ['inline switch', 'in.here']}) 
>>> df.search_term.str.replace('in\\.', 'in. ') 
0 inline switch 
1   in. here 
Name: search_term, dtype: object 
+0

ありがとうAmi。私はあなたがエスケープされて参照してください。最初の議論では、しかし、第二引数についてはどうですか?文字通り 'in'を置き換えたい場合はby 'in。 'str.replace(' in \\。 '、' in \\。 ')またはstr.replace(' in \\。 '、' in ')を使用する必要がありますか? –

+0

@AlejandroSimkievichそれは論理的だと思われるが、そうではない。上記の更新された例を参照してください。最初の文字列のドットだけが正規表現文字(エスケープされなければならない)として解釈されます。 –

+0

ありがとうAmi –

1

とは答えです:正規表現ドットにマッチする。後者は、正規表現を使用しない

a.replace('in.', ' in. ') 

:に

df['a'] = df['a'].str.replace('in.', ' in. ') 

が同等ではない。よう

str.replace()パンダでは、実際、正規表現を使用します。したがって、 '\を使用してください。の代わりに '。'あなたが実際にドットを意味し、文字を意味しない場合、正規表現を使用するステートメントで。

Regular Expression to match a dot

+0

を使用していることです。ただし、正規表現を使用することはできますが、ドットに特別な意味はないことに注意してください。 –

関連する問題