在熊猫中通过合并功能左联接

时间:2019-12-10 11:22:08

标签: python pandas left-join

我有两个要左连接的表

表A

x

表B

ID | Name | Birthday | Salary

1  |  Tom | 01/12/80 | 29382
2  | Kate | 21/2/90  | 39383
3  | Ini  | 23/8/92  | 28287

我想和

这样的结果进行左连接
ID | Name | Birthday | Home

1  |  Tom | 01/2/80  | Chur
2  | Kate | 21/2/90  | Blu
3  | Ini  | 20/9/92  | La

我的代码是

ID | Name | Birthday | Salary | Home

1  |  Tom | 01/12/80 | 29382  |  Chur
2  | Kate | 21/2/90  | 39383  |  Blu
3  | Ini  | 23/8/92  | 28287  |  La

但是结果像

一样出现
join_table = tableA.merge(tableB['Home'], how = 'left', on =['ID'])

ID 1和3是重复的,因为它们的生日数据不同,但两个表中的ID相同。 有人可以帮忙吗?谢谢

4 个答案:

答案 0 :(得分:0)

尝试使用:

join_table = tableA.merge(tableB['Home'], how = 'left', on =['ID']).drop_duplicates(subset=['Name'], keep='first')

答案 1 :(得分:0)

希望这会有所帮助:在tableB合并中包含“ ID”和“主页”

join_table = tableA.merge(tableB[['ID','Home']], how = 'left', on =['ID'])
print(join_table)

输出:

   ID  Name  Birthday  Salary  Home
0   1   Tom  01/12/80   29382  Chur
1   2  Kate   21/2/90   39383   Blu
2   3   Ini   23/8/92   28287    La

答案 2 :(得分:0)

 import pandas as pd
 pd.merge(tableA,tableB,on=['ID','Name','Birthday'],how='left')

答案 3 :(得分:0)

因为您不需要表B的生日,所以不要使用它并合并到“名称”或“ ID”上:

join_table = tableA.merge(tableB['Home','Name','ID'], how = 'left', on = 'ID')