Pandas如何根据映射表将值映射到DataFrame多个列中
Pandas按映射表替换列值实现方法
首先复现题目中的两个测试DataFrame:
import pandas as pd # 初始df1 df1 = pd.DataFrame({ 'id1': [1, 4, 2], 'id2': [3, 2, 1] }) # 数值-字符映射表df2 df2 = pd.DataFrame({ 'id3': [1, 2, 3, 4], 'id4': ['a', 'b', 'c', 'd'] })
实现不需要写循环、不需要做多表关联,两步即可完成:
- 先把映射表df2转成
{数值: 对应字符}格式的字典,作为统一替换规则 - 用替换规则对df1中需要处理的id1、id2列做批量值替换
对应实现代码:
# 生成映射字典 value_map = df2.set_index('id3')['id4'].to_dict() # 批量替换两列的数值 df1[['id1', 'id2']] = df1[['id1', 'id2']].replace(value_map)
执行完成后打印df1,即可得到目标结果:
id1 id2 0 a c 1 d b 2 b a
补充说明:如果是单列替换的场景,用df['列名'].map(value_map)也能达到同样效果,多列批量替换时直接用replace传入映射字典的写法更简洁,执行效率也更高。
内容的提问来源于stack exchange,提问作者AhmadKNaji
相关产品推荐
相关产品推荐

