如何使用Pandas永久替换DataFrame指定列中的相同字符串
问题原因
你遇到的问题来自几个常见的pandas使用误区:
- 参数拼写错误:你写的
inlace = True属于拼写错误,正确的参数名是inplace=True,pandas会自动忽略无法识别的无效参数,所以你的修改没有作用到原数据集上。 - 未指定替换列:你直接对整个DataFrame调用
replace方法,会扫描所有列的内容执行替换逻辑,很容易误修改其他列的数值,这就是你原本的SLL变成UCL的核心原因。 - 不必要的正则模式:你要替换的是固定的完整字符串"SLL",不需要开启
regex=True,开启正则模式后反而可能触发意料之外的子串匹配,导致其他内容被误改。
正确实现方式
如果你需要生成新的数据集、不改动原始数据,用以下写法:
# 仅对competitions列执行完全匹配替换 messi_dataset['competitions'] = messi_dataset['competitions'].replace("SLL", "League")
如果你需要直接修改原数据集,用以下写法:
messi_dataset['competitions'].replace("SLL", "League", inplace=True)
如果你的场景确实需要正则匹配(比如要匹配前后附带其他字符的"SLL"子串),再额外添加regex=True参数即可。
内容的提问来源于stack exchange,提问作者George Zambrano
相关产品推荐
相关产品推荐

