如何根据多个条件加 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
相同的 Long
和 Lat
,
Id
2
给出 Value
108
,因为它有相同的 Long
和 Lat
与 Id
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
这是我的数据框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
,因为它有相同的 Long
和 Lat
与 Id
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