如何根据多个条件加 id 合并两个数据框

How to merge two dataframe based on multiple criteria plus id

这是我的数据框df

Id     Value
3      104
6      108

这里是参考数据ref

Id    Code  Long     Lat
1     ABC     89      82
2     DEF     87      81
3     GHI     89      82
4     IJK     90      81
5     LMN     90      81
6     OPQ     87      81

这是我所做的

df.merge(ref, how='left', left_on=['Id'], right_on = ['Id'])

结果是

Id     Value    Code    Long     Lat
3      104      GHI       89      82
6      108      OPQ       87      81

我期望的是 Id 1 给出 Value 104,因为它具有与 Id 3 相同的 LongLatId 2 给出 Value 108,因为它有相同的 LongLatId 6

所以输出数据帧将是这样的

Id     Value    Code    Long     Lat
1      104      ABC       89      82
2      108      DEF       87      81
3      104      GHI       89      82
6      108      OPQ       87      81

你可以合并两次

temp = df.merge(ref, how='left', left_on=['Id'], right_on = ['Id'])
out = ref.merge(temp[['Value','Long','Lat']])
Out[473]: 
   Id Code  Long  Lat  Value
0   1  ABC    89   82    104
1   3  GHI    89   82    104
2   2  DEF    87   81    108
3   6  OPQ    87   81    108