如何替换 Pandas 数据框的字符串列中的文本?

How to replace text in a string column of a Pandas dataframe?

我的数据框中有一列是这样的:

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

我想用 - 破折号替换 , 逗号。我目前正在使用此方法,但没有任何改变。

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

有人可以帮忙吗?

使用矢量化 str method replace:

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

df
      range
0    (2-30)
1  (50-290)

编辑: 所以如果我们看看您尝试过的方法以及它为什么不起作用:

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

docs我们看到这样的描述:

str or regex: str: string exactly matching to_replace will be replaced with value

所以因为str值不匹配,所以没有发生替换,对比如下:

df = pd.DataFrame({'range':['(2,30)',',']})
df['range'].replace(',','-', inplace=True)

df['range']

0    (2,30)
1         -
Name: range, dtype: object

此处我们在第二行获得完全匹配并进行替换。

对于从 Google 到达这里的任何其他人搜索如何在 所有 列上进行字符串替换(例如,如果有多个列,如 OP 的 'range'列): Pandas 有一个内置的 replace 方法可用于数据框对象。

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

来源:Docs

将列名称中的所有逗号替换为下划线

data.columns= data.columns.str.replace(' ','_',regex=True)

此外,对于那些希望替换一列中的多个字符的用户,您可以使用正则表达式来完成:

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

df['string_col'].str.replace(regular_expression, '', regex=True)

如果您只需要替换特定列中的字符,不知何故 regex=True 和 in place=True 都失败了,我认为这种方法可行:

data["column_name"] = data["column_name"].apply(lambda x: x.replace("characters_need_to_replace", "new_characters"))

lambda 更像是一个在这种情况下像 for 循环一样工作的函数。 这里的 x 代表当前列中的每一个条目。

您唯一需要做的就是更改“column_name”、“characters_need_to_replace”和“new_characters”。

如果您想从字符串中删除两个或更多元素,例如字符“$”和“,”:

Column_Name
===========
0,000
,100,000

...然后使用:

data.Column_Name.str.replace("[$,]", "", regex=True)

=> [ 100000, 1100000 ]

与 Nancy K 的回答几乎相似,这对我有用:

data["column_name"] = data["column_name"].apply(lambda x: x.str.replace("characters_need_to_replace", "new_characters"))