python中的多对一合并、左连接

2024-06-16 12:38:42 发布

您现在位置: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中的以下代码获得以下结果

result = pd.merge(tt,tt1,on='hh_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: 数据代码gtidagehhstatus记录
1条回答
网友
1楼 · 发布于 2024-06-16 12:38:42

当联接键在“right”表中有超过1条匹配记录时,这是一个左联接工作as expected

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

相关问题 更多 >