Pandasデータフレームの列のテキストを置き換える方法は?


96

次のようにデータフレームに列があります:

range
"(2,30)"
"(50,290)"
"(400,1000)"
... 

そして、,コンマを-ダッシュに置き換えたいです。私は現在この方法を使用していますが、何も変更されていません。

org_info_exc['range'].replace(',', '-', inplace=True)

誰か助けてもらえますか?

回答:


194

ベクトル化されたstrメソッドを使用しますreplace

In [30]:

df['range'] = df['range'].str.replace(',','-')
df
Out[30]:
      range
0    (2-30)
1  (50-290)

編集

それで、あなたが何を試したか、そしてなぜそれがうまくいかなかったのかを見ると:

df['range'].replace(',','-',inplace=True)

ドキュメントから私たちはこのdescを見る:

strまたはregex:str:to_replaceと完全に一致する文字列は値で置き換えられます

したがって、str値が一致しないため、置換は行われません。以下と比較してください。

In [43]:

df = pd.DataFrame({'range':['(2,30)',',']})
df['range'].replace(',','-', inplace=True)
df['range']
Out[43]:
0    (2,30)
1         -
Name: range, dtype: object

ここでは、2行目が完全に一致し、置換が行われます。


33

すべての列で文字列を置換する方法(たとえば、OPの「範囲」列のように複数の列がある場合)についてGoogle検索からここに到着した他の人のために:Pandasにはreplace、データフレームオブジェクトで使用できる組み込みメソッドがあります。

df.replace(',', '-', regex=True)

出典:Docs



0

さらに、列内の複数の文字を置き換えたい場合は、正規表現を使用して行うことができます。

import re
chars_to_remove = ['.', '-', '(', ')', '']
regular_expression = '[' + re.escape (''. join (chars_to_remove)) + ']'

df['string_col'].str.replace(regular_expression, '', regex=True)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.