这是我的数据帧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
具有相同的Long
和Lat
,Id
2
是给予Value
108
,因为它与Id
6
具有相同的Long
和Lat
所以输出数据帧将是这样的
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