Python:如何找到两个熊猫数据框之间的正确组合?

时间:2019-08-26 14:32:20

标签: python pandas

我有两个数据帧df1df2

df1包含IDCode之间的链接信息

df1
     ID   Code
0    48    3
1    47    2
2    50    0
3    49    1

df2包含以下信息:ID作为索引,一些距离d和不同的代码。

df2
       d1    d2 ... d100  Code1  Code2  ... Code100
47    3.2   5.4     45.2    3       2         1
48    1.4   7.4     46.7    0       3         2
49    5.4   8.9     33.2    1       2         0
50    6.3   8.7     47.5    3       0         2

我想将df1相对于同一组合(例如

)的距离与关联
df1
     ID   Code   d
0    48    3    7.4
1    47    2    5.4
2    50    0    8.7
3    49    1    5.4

我说df2中有数百个代码和距离。

目标是在df1中找到df2的组合。例如,组合ID=48Code=3df2的第二行中,距离为d2=7.4

1 个答案:

答案 0 :(得分:0)

您需要使用引用的df2中的选择性列进行合并。之后,您可以合并合并的结果。

m1 = df1.merge(df2.reset_index(), left_on=['ID', 'Code'], right_on=['index', 'Code1'])[['ID', 'Code', 'd1']].rename(columns={'d1': 'd'})
m2 = df1.merge(df2.reset_index(), left_on=['ID', 'Code'], right_on=['index', 'Code2'])[['ID', 'Code', 'd2']].rename(columns={'d2': 'd'})
res = pd.concat([m1, m2])

输出:

    ID  Code    d
0   49  1      5.4
0   48  3      7.4
1   47  2      5.4
2   50  0      8.7