如何在pandas中将指定字典映射规则应用到不同目标列
最佳实现方案
直接使用pandas原生的Series.map()方法即可,你所说的「跨列映射」本质是将源列的映射结果赋值给新列,完全属于map的适用场景,实现代码仅需一行:
ila_df['strategy'] = ila_df['injection_type'].map(mapping_dict)
补充说明
- 该方案的执行效率远高于逐行写条件判断的
loc写法,数据量越大优势越明显 - 如果
injection_type列存在不在mapping_dict里的取值,默认映射结果为NaN,如果需要给未匹配的值设置默认值,可以链式调用fillna方法:# 示例:未匹配值统一赋值为"Unknown" ila_df['strategy'] = ila_df['injection_type'].map(mapping_dict).fillna("Unknown") - 备选方案可以使用
Series.replace()方法,但性能弱于map,仅在需要保留源列未匹配原值的场景下优先选择:ila_df['strategy'] = ila_df['injection_type'].replace(mapping_dict)
内容的提问来源于stack exchange,提问作者caasswa
相关产品推荐
相关产品推荐

