首页 > 解决方案 > Pandas - 通过在另一个数据框中查找来替换值

问题描述

我有一个问题需要用 Python3 在我的 pandas 数据框中解决。我有两个数据框 - 第一个是;

    ID Name  Linked Model 1  Linked Model 2  Linked Model 3
0  100    A          1111.0          1112.0             NaN
1  101    B          1112.0          1113.0          1115.0
2  102    C             NaN             NaN             NaN
3  103    D          1114.0             NaN             NaN
4  104    E          1114.0          1111.0          1112.0

第二个是;

   Model ID Name
0      1111    A
1      1112  A,B
2      1113    C
3      1114    D
4      1115    Q
5      1116    Z
6      1117    E
7      1118    W

所以代码应该在 - 例如Linked Model 1列中查找值,并在第二个数据帧的Name列中找到相应的值,以便可以将 ID 替换为 name,就像结果中所示;

在此处输入图像描述

因此,您可以在结果输出中看到,None 保持为 None(可以替换为 numpy N/As),并且第二个数据帧中的名称现在替换为第一个数据帧中它们对应的模型 ID

我期待听到您的解决方案!

谢谢

标签: pythonpandasdataframe

解决方案


初始化替换字典并用于df.replace将这些 ID 映射到名称。

m = df2.set_index('Model ID')['Name'].to_dict()
v = df.filter(like='Linked Model')
df[v.columns] = v.replace(m)

df
    ID Name Linked Model 1 Linked Model 2 Linked Model 3
0  100    A              A            A,B            NaN
1  101    B            A,B              C              Q
2  102    C            NaN            NaN            NaN
3  103    D              D            NaN            NaN
4  104    E              D              A            A,B

推荐阅读