如何高效实现Pandas DataFrame多列指定值的批量替换
解决方案
直接使用Pandas DataFrame原生的全局替换能力,传入映射字典即可一行完成所有值替换:
df = df.replace({'apple': 0, 'mango': 1, 'yoo': 2, 'ram': 3})
说明
- 你的原有写法存在隐性bug:给
user3列赋值时直接用了df['user1']的替换结果,若两列原始值不一致会导致数据错误,上述全局替换方案不存在这个问题 replace方法传入全量值映射字典时,会自动遍历整个DataFrame的所有单元格,匹配到字典键的取值就会自动替换为对应值,完全匹配你的需求场景- 如果后续需要新增替换规则,只需往字典中追加键值对即可,维护成本极低
如果你需要限定仅指定列执行对应替换规则(避免其他列的同值被误改),也可以使用列维度的映射写法:
df = df.replace({ 'user1': {'apple':0, 'mango':1}, 'user2': {'yoo':2, 'ram':3}, 'user3': {'apple':0, 'mango':1} })
内容的提问来源于stack exchange,提问作者nerd_gram
相关产品推荐
相关产品推荐

