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

本文的目标是将表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)

这样结果就没有问题了。

到此这篇关于使用pd.merge表连接出现多余行的问题解决的文章就介绍到这了,更多相关pd.merge表连接多余行问题内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 一次性彻底讲透Python中pd.concat与pd.merge

    目录 数据拼接:pd.concat 数据关联:pd.merge 两者区别 数据的合并与关联是数据处理过程中经常遇到的问题,在SQL.HQL中大家可能都有用到 join.uion all 等 ,在 Pandas 中也有同样的功能,来满足数据处理需求,个人感觉 Pandas 处理数据还是非常方便,数据处理效率比较高,能满足不同的业务需求 数据拼接:pd.concat concat 是pandas级的函数,用来拼接或合并数据,其根据不同的轴既可以横向拼接,又可以纵向拼接 函数参数 pd.concat(

  • 使用pd.merge表连接出现多余行的问题解决

    本文的目标是将表1论文及出版物与表2出版物及其指标进行匹配. 利用pandas的merge函数实现表的左外连接.左外连接即左表的外连接,左表保持不变,匹配右表的行(合并后右表肯能存在空值). paperPublicationIndicator = pd.merge(paperPublication,publicationIndicator, how='left',left_on='出版物',right_on='名称',sort=False) 结果发现连接后表相比于表1论文出版物 多出来13行.进

  • pandas表连接 索引上的合并方法

    如下所示: left1 = pd.DataFrame({'key':['a','b','a','a','b','c'],'value':range(6)}) right1 = pd.DataFrame({'group_val':[3.5,7]},index = ['a','b']) print(left1) print(right1) result = pd.merge(left1,right1,left_on='key',right_index=True) print(result) 层次化数

  • Python Pandas数据合并pd.merge用法详解

    目录 前言 语法 参数 1.连接键 2.索引连接 3.多连接键 4.连接方法 5.连接指示 总结 前言 实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接.合并等操作 可以将两个DataFrame或Series合并,最终返回一个合并后的DataFrame 语法 pd.merge(left, right, how = 'inner', on = None, left_on = None, right_on = None, left_index = Fal

  • MySQL中基本的多表连接查询教程

    一.多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: 由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为当数据表项目太多的时候,会非常慢.一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN 2.   内连接INNER JOIN 在MySQL中把I SELECT * FROM table1 CROSS JOIN tabl

  • SQL多表连接查询实例分析(详细图文)

    新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接外连接可分为:左连接.右连接.完全外连接. 1.左连接  left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID执行结果: 左外连接包含left joi

  • 详解数据库多表连接查询的实现方法

    详解数据库多表连接查询的实现方法 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型.为不同实体创建新的表,尔后通过连接进行查询. 连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在F

  • mysql delete 多表连接删除功能

    单个表的删除: DELETE FROM tableName WHERE columnName = value; 删除表内的所有行: 即:保留表的结构.属性.索引 DELETE FROM tablename; DELETE * FROM tablename; 删除同一张表内的所有内容(删除数据.表结构) TRUNCATE customer; 无法报告删除了几行,且只能用于单一表 多表连接删除: DELETE orders,itrms FROM orders,items WHERE orders.u

  • 从两种SQL表连接写法来了解过去

    例如:一个二表连接的SQL,有两种写法: (1)select A.c1,A.c2,B.c1,B.c2 from table1 A,table2 B where A.id=B.id (2)select A.c1,A.c2,B.c1,B.c2 from table1 A join table2 B on A.id=B.id 哪种写法好呢?现在提倡用哪一种? 你喜欢用哪一种? 复制代码 代码如下: select * from a,b where a.id=b.id select * from a in

  • SQL表连接图解

    可以通过图看下 多表查询分为 内.外连接 外连接分为左连接(left join 或left outer join).右连接(right join 或者 right outer join).和完整外部连接 (full join 或者 full outer join) 左连接(left join 或 left outer join)的结果就是left join子句中的左表的所有行,而不仅仅是链接列所匹配的行,如果左表中的某行在右表中没有匹配,则在相关联的结果行中右表的所有选择列均为空值(NULL)

随机推荐