下面显示的简单数据帧 replace 不起作用。NewPhone 列包含与原始列相同的值。

import pandas as pd
SF = pd.read_csv(r"xxx.csv")
SF['NewPhone'] = SF['Phone'].replace("(",'xxx')
print(SF['NewPhone'])

最佳答案

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 按预期工作(我不想破坏他的答案)

关于python - 替换 Python DataFrame 列中的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50490540/

10-11 03:19
查看更多