Pandas DataFrame列A特定字符串替换操作无效问题求解
错误原因分析
- 方法1错误:
str是Pandas Series(单列)的字符串访问器,直接对整个DataFrame调用str.replace,无法作用于多列结构,也不符合仅修改A列的需求,自然无法生效。 - 方法2错误:存在两处语法/调用错误:一是旧版本Pandas的
str.replace不支持第一个参数传入列表,仅支持字符串或正则表达式;二是同时使用了列赋值和inplace=True参数,还多写了逗号,相当于把一个包含(Series对象, True)的元组赋值给了A列,完全不符合语法规则。 - 方法3错误:用
loc筛选时只指定了行筛选条件,没有指定要修改的列是A列,会直接把符合条件的整行所有列都覆盖为目标字符串,不仅达不到修改A列的效果,还会误改其他列数据。
正确实现方式
因为需要精准匹配整单元格值替换,不需要模糊匹配子串,最稳妥的写法是用Series的replace方法:
df['A'] = df['A'].replace('Facility-based testing-OH', 'Facility based testing-OH')
如果确认需要用字符串替换的方式处理(比如后续可能需要匹配子串),可以用str.replace,加上regex=False避免字符串里的特殊字符被识别为正则规则:
df['A'] = df['A'].str.replace('Facility-based testing-OH', 'Facility based testing-OH', regex=False)
如果要省内存不需要生成新对象,也可以用inplace参数写法:
df['A'].replace('Facility-based testing-OH', 'Facility based testing-OH', inplace=True)
补充:如果替换后仍未生效,可以先检查A列的值是否存在首尾不可见空格,可先执行
df['A'] = df['A'].str.strip()清理后再执行替换操作。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

