DataFrame中Regex Replace无法替换字符串问题求助
解决DataFrame单元格内容替换失效的问题
问题根源
替换失效主要有两个原因:
- 目标字符串里的
(API)包含正则特殊字符(括号),开启regex=True后会被当作正则语法解析,而非普通文本 - 部分写法存在语法误用(比如
inplace=True的错误赋值)
正确解决方案
根据需求分两种场景给出可行代码:
1. 精确匹配替换(仅替换完全等于目标文本的单元格)
无需启用正则,直接精确匹配即可:
cmb['Skill'] = cmb['Skill'].replace('Application Programming Interface (API)', 'APIs') # 或用inplace模式(二选一) cmb['Skill'].replace('Application Programming Interface (API)', 'APIs', inplace=True)
2. 包含式替换(替换所有含目标文本的单元格)
如果需要替换包含该文本的内容,要么转义正则特殊字符,要么关闭正则匹配:
# 方式一:转义正则特殊字符(括号前加反斜杠) cmb['Skill'] = cmb['Skill'].replace(r'Application Programming Interface \(API\)', 'APIs', regex=True) # 方式二:用str.replace并关闭正则 cmb['Skill'] = cmb['Skill'].str.replace('Application Programming Interface (API)', 'APIs', regex=False)
错误写法修正
你之前的几个错误写法说明:
cmb['Skill'] = cmb['Skill'].replace(..., inplace=True):inplace=True会让方法返回None,直接赋值会把整列置为None,正确写法是去掉赋值,直接调用cmb['Skill'].replace(..., inplace=True)cmb = cmb.replace(..., regex=True):这个写法会作用于整个DataFrame,而非仅Skill列,没必要这么写
内容的提问来源于stack exchange,提问作者RCarmody
相关产品推荐
相关产品推荐

