需对DataFrame某列做大量值替换时可替代np.where的方法
适配大量替换需求的优雅实现方案
方案1:单列替换(最适配你当前场景)
直接把所有替换规则定义为映射字典,调用pandas自带的replace()方法完成批量替换,和你原有np.where的逻辑完全一致,不匹配的取值会保留原值:
# 所有替换规则统一维护在这个字典中,100条规则直接补全即可 country_replace_map = { "UK": "United Kingdom", "USA": "United States", # 剩余98条替换规则直接按"旧值":"新值"的格式追加即可 } # 一行代码完成全量替换 df["Country"] = df["Country"].replace(country_replace_map)
方案2:多列同时批量替换
如果你后续需要对多个列做不同的替换操作,可以定义嵌套字典,一次性完成所有列的替换:
# 外层键为列名,内层为对应列的替换映射 all_replace_map = { "Country": { "UK": "United Kingdom", "USA": "United States" }, "Continent": { "EU": "Europe", "AS": "Asia" } } df = df.replace(all_replace_map)
补充说明
- 上述写法默认是全值严格匹配,和你原有实现的逻辑完全一致
- 如需模糊匹配子字符串后替换,可以传入
regex=True参数,该场景下需要注意特殊正则字符的转义
内容的提问来源于stack exchange,提问作者user1309044
相关产品推荐
相关产品推荐

