多对一合并python在python中左连接

2024-06-06 19:52:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在两个表a(4条记录)和b(2条记录)之间进行左连接。 但是我的结果数据集有超过8条记录,这不是我所期望的。你知道吗

我使用的数据如下

a

hh_id|sex|age_group|mgb|wrk_status
----------------------------------
140401100|2|10|1|1
140401100|2|10|1|1
140401100|2|10|2|1
140401100|2|10|2|1

b类

hh_id|sex__|age_group__|mgb_age
-------------------------------
140401100|3|2|36
140401100|3|2|37

我在python中使用以下代码得到以下结果

结果=pd.合并(tt,tt1,on='hh\u id',how='left')

结果

hh_id|sex|age_group|mgb|wrk_status|sex__|age_group__|mgb_age
------------------------------------------------------------
140401100|2|10|1|1|3|2|36
140401100|2|10|1|1|3|2|37
140401100|2|10|1|1|3|2|36
140401100|2|10|1|1|3|2|37
140401100|2|10|2|1|3|2|36
140401100|2|10|2|1|3|2|37
140401100|2|10|2|1|3|2|36
140401100|2|10|2|1|3|2|37

但我需要的结果如下

hh_id|sex|age_group|mgb|wrk_status|sex__|age_group__|mgb_age
------------------------------------------------------------
140401100|2|10|1|1|3|2|36
140401100|2|10|1|1|3|2|37
140401100|2|10|2|1|3|2|37
140401100|2|10|2|1|3|2|37

因此,理想情况下,“a”的第一条记录应该取“b”的第一条记录,“a”的其余记录应该取“b”的第二条记录,我的结果数据集应该只有四条记录,因为它是左连接

提前谢谢!!!你知道吗


Tags: 数据代码idageonhhstatus记录
1条回答
网友
1楼 · 发布于 2024-06-06 19:52:40

当联接键在“right”表中有多个匹配记录时,这是一个左联接工作as expected。你知道吗

您似乎想要的(假设您打算在最后2个所需结果中的一个中键入36)是删除重复项,这可以通过从“left”表中选择不同的结果或从join查询中选择不同的结果在开始或结束时实现。你知道吗

相关问题 更多 >