python编程,解读pandas.merge()合并dataframe的on标准
发布于 作者:苏南大叔 来源:程序如此灵动~

继续讨论pandas.merge()
函数,本文讨论其中的on
、left_on
和right_on
三个参数,对应到sql
语言里面,就是两者进行连接的on
标准的选择问题。默认的on
,必然是两者都有的某个列,比如id
。但是,它是可以改变的。

大家好,这里是苏南大叔的“程序如此灵动”博客,这里讲述苏南大叔和计算机代码之间的故事。测试环境:python@3.6.8
,pandas@1.1.5
,numpy@1.24.4
。
前文回顾
本文是基于上一篇文章,关于两个dataframe
的合并问题的文章的。参考:
本文所描述的pandas.merge()
具有和数据库语句类似的on
的特性,可以参考:
参数 | 默认 | 说明 |
---|---|---|
on | 用于连接的列名,必须在两个DataFrame对象中都存在 | |
left_on、right_on | 分别指定 left 和 right 的连接列 |
默认on
默认的on
就是会自动选择两者都存在的列,本文里面就是列a
,用于连接的列名,必须在两个DataFrame对象中都存在。
这里的三种写法是等效的结果,输出都是:
多列相同的情况
多个相同列的时候,比如下面的列a
和列b
,那么,默认的join
标准就是两者都相同的时候。例如:
输出:

输出都是:
以a
和b
相同列做一个单位,求合集。
输出:
多列取其一
虽然同时有两个相同列,但是只取其中一个作为合并的标准。
输出:
左右取不同
默认是取相同名字的列,但是也可以指定不同的名字进行比较。还是取多列相同的这个做例子。
这个结果是略显奇怪的,别的例子里面因为作为比较的列都是相同的,所以合并处理了。但是,这个例子里面,作为比较的两个列是不同的名字,所以,两者不但没有合并,而且作为下划线区分。
输出:
当出现这些带附加信息的列名的时候,是使用suffixes
参数进行区分的。例如:
输出:
结语
其余的pandas.merge()
的参数,也是属于用不到的,待后续文章描述吧。更多python
相关经验文章,请参考:


