如何基于多个条件和 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

我期望的是Id1是给Value104,因为它与Id3具有相同的LongLatId2是给予Value108,因为它与Id6具有相同的LongLat

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

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

最新更新