You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python DataFrame列字符替换失效:replace方法未生成预期结果

解决Pandas DataFrame中replace方法未生效的问题

嘿,我懂你碰到的糟心事了——你想把Phone列里的"("替换成"xxx",结果生成的NewPhone列和原列完全一样,半点儿变化都没有对吧?这其实是因为pandas默认的replace是全匹配替换,也就是说它只会替换那些**整个单元格内容完全等于"("**的情况,而你的Phone列里的内容应该是类似"(123)456789"这种包含括号的完整手机号,单个括号只是单元格内容的一部分,所以默认的全匹配模式找不到匹配项,自然就没替换啦。

下面给你两种靠谱的解决办法:

方法1:使用Series.str.replace()

这是处理字符串部分替换最直接的方式,专门针对Series里的字符串进行子串替换:

import pandas as pd
SF = pd.read_csv(r"xxx.csv")
# 使用str.replace针对字符串子串替换,regex=False避免括号被当成正则解析
SF['NewPhone'] = SF['Phone'].str.replace("(", 'xxx', regex=False)
print(SF['NewPhone'])

方法2:给replace()加上regex=True参数

如果你还是想用原生的replace方法,只需要开启正则匹配模式,这样它就会查找单元格里的子串并替换了:

import pandas as pd
SF = pd.read_csv(r"xxx.csv")
# 开启正则匹配,注意转义正则特殊字符"("
SF['NewPhone'] = SF['Phone'].replace("\(", 'xxx', regex=True)
print(SF['NewPhone'])

这里括号前面加了反斜杠\转义,因为在正则表达式里(是特殊元字符,必须转义才能表示普通的括号字符。

两种方法都能解决你的问题,选哪种看个人习惯~

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:47:42