Python 在Pandas中通过合并函数左连接
我有两张桌子要左连接 表APython 在Pandas中通过合并函数左连接,python,pandas,left-join,Python,Pandas,Left Join,我有两张桌子要左连接 表A ID | Name | Birthday | Salary 1 | Tom | 01/12/80 | 29382 2 | Kate | 21/2/90 | 39383 3 | Ini | 23/8/92 | 28287 表B 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
1 | Tom | 01/12/80 | 29382
2 | Kate | 21/2/90 | 39383
3 | Ini | 23/8/92 | 28287
表B
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 | Name | Birthday | Salary | Home
1 | Tom | 01/12/80 | 29382 | Chur
1 | Tom | 01/2/80 | 29382 | Chur
2 | Kate | 21/2/90 | 39383 | Blu
3 | Ini | 23/8/92 | 28287 | La
3 | Ini | 20/9/92 | 28287 | La
ID 1和3是重复的,因为它们具有不同的生日数据,但在两个表中具有相同的ID。
有人能帮忙吗?谢谢尝试使用:
join_table = tableA.merge(tableB['Home'], how = 'left', on =['ID']).drop_duplicates(subset=['Name'], keep='first')
尝试使用:
join_table = tableA.merge(tableB['Home'], how = 'left', on =['ID']).drop_duplicates(subset=['Name'], keep='first')
希望这有帮助:在tableB合并中包含“ID”和“Home”
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
希望这有帮助:在tableB合并中包含“ID”和“Home”
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
因为您不需要表B中的生日,所以不要使用它并根据名称或ID合并:
join_table=tableA.merge(tableB['Home','Name','ID'],how='left',on='ID')
因为您不需要表B中的生日,所以不要使用它并根据名称或ID进行合并:
join\u table=tableA.merge(tableB['Home','Name','ID'],how='left',on='ID')
您是否尝试过join\u table=tableA.merge(tableB,how='left',on='ID'])
?它是否提供了预期的结果?您是否尝试了join\u table=tableA.merge(tableB,how='left',on=['ID'])
?它是否提供了预期的结果?tableB中没有“ID”列,因为tableB['Home']仅用于合并()中,tableB中没有“ID”列,因为tableB['Home']仅用于合并()中这将仍然为您提供所有不在预期结果中的合并列这是次要更改这将仍然为您提供所有不在预期结果中的合并列这是次要更改代码运行时没有错误,但仍然是相同的结果(重复)。根据您的示例输入,我得到了不重复的输出。Try.drop_duplicates()代码运行时没有错误,但使用duplicate时仍然得到相同的结果。根据您的示例输入,我得到了没有重复项的输出。Try.drop_duplicates()如果表B的列数超过10列,我是否需要编写如下代码:join_table=tableA.merge(tableB['Home',…'Name','ID',how='left',on='ID')@我想是吧。或者换一种方式:删除您不需要的列。顺便说一句,一个好的工作习惯是只使用您需要的数据:)合并可能会有很高的成本。在两个数据帧(或多个数据帧)上进行数据选择,然后进行合并。如果表B有10个以上的列,我是否必须编写如下代码:join_table=tableA.merge(tableB['Home',…'Name','ID'],how='left',on='ID')??@mtpelerinI猜测。或者换一种方式:删除不需要的列。顺便说一句,一个好的工作习惯是只使用您需要的数据:)合并会有很高的成本。在两个(或多个数据帧)上进行数据选择,然后合并。