使用pd.merge进行表连接,出现多余行的问题

在尝试使用pandas的merge函数进行左外连接表1(论文及出版物)和表2(出版物及其指标)时,发现连接后的表比原始表多了13行。原因在于表2中存在出版物的重复行,如出版物A对应多个指标。通过删除表2中的重复出版物信息,成功解决了这一问题,确保了连接结果的正确性。
部署运行你感兴趣的模型镜像

本文的目标是将表1论文及出版物与表2出版物及其指标进行匹配。
表1 论文出版物信息(存在空值)
表2 出版物指标信息
利用pandas的merge函数实现表的左外连接。左外连接即左表的外连接,左表保持不变,匹配右表的行(合并后右表肯能存在空值)。

paperPublicationIndicator = pd.merge(paperPublication,publicationIndicator,
    how='left',left_on='出版物',right_on='名称',sort=False)

结果发现连接后表相比于表1论文出版物 多出来13行。进行探究发现是表2出版物指标信息中存在 出版物A-指标1,出版物A-指标2这样的出版物重复行。进行匹配后会出现:

出版物  名称  指标
出版物A  出版物A  指标1
出版物A  出版物A  指标2   #多余的行

这里选择预先删除 表2出版物指标 中的重复出版物信息。

publicationIndicator.drop_duplicates(subset=['名称'],
		keep='first',inplace=True)

这样结果就没有问题了。

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值