我有两个数据帧df1
和df2
。
df1
包含ID
和Code
之间的链接信息
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=48
和Code=3
在df2
的第二行中,距离为d2=7.4
答案 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