下面显示的简单数据框replace
不起作用
NewPhone
列包含与原始列相同的值。
import pandas as pd
SF = pd.read_csv(r"xxx.csv")
SF['NewPhone'] = SF['Phone'].replace("(",'xxx')
print(SF['NewPhone'])
答案 0 :(得分:6)
replace
查找完全匹配(默认情况下,除非您通过regex=True
但是您需要转义括号 - 请参阅@ piRSquared的答案),您需要str.replace
:
SF['NewPhone'] = SF['Phone'].str.replace("(",'xxx')
将使用新字符串
替换所有传入的字符串示例:
In[20]:
df = pd.DataFrame({'phone':['(999)-63266654']})
df
Out[20]:
phone
0 (999)-63266654
In[21]:
df['phone'].str.replace("(",'xxx')
Out[21]:
0 xxx999)-63266654
Name: phone, dtype: object
如果我们尝试replace
,则不会发生匹配:
In[22]:
df['phone'].replace("(",'xxx')
Out[22]:
0 (999)-63266654
Name: phone, dtype: object
请参阅@ piRSquared的答案,了解如何让replace
按预期工作(我不想蚕食他的回答)
答案 1 :(得分:2)
Series.replace
方法默认使用regex
参数False
。将其设置为True
。此外,如果要替换的字符串被解释为正则表达式模式,我们将需要转义左括号。
df.phone.replace("\(", 'xxx', regex=True)
0 xxx999)-63266654
Name: phone, dtype: object
df = pd.DataFrame({'phone':['(999)-63266654']})