在Pandas中,join()方法也可以用于实现合并操作,本文介绍join()方法的具体用法。
一基础合并操作
join(other): 将一个或多个DataFrame加入到当前DataFrame中,实现合并的功能。other参数传入被合并的DataFrame,通常是传入一个DataFrame,将两个DataFrame合并到一起,如果需要合并多个,则用列表或元组的方式传入(合并多个DataFrame需要满足一些条件,本文会介绍)。
join()方法合并的结果默认以左连接的方式进行合并,默认的连接列是DataFrame的行索引,并且,合并两个DataFrame时,两个DataFrame中不能有相同的列名(不像merge()方法会自动给相同的列名加后缀)。
二 连接方式
how: 指定合并时使用的连接方式,连接方式有四种,默认为left。
inner | 内连 | 取行索引的交集 |
---|---|---|
outer | 外连 | 取行索引的并集 |
left | 左连 | 使用左边df的行索引 |
right | 右连 | 使用右边df的行索引 |
三设置用于连接的列
on: 指定合并时调用join()方法的DataFrame中用于连接(外连,内连,左连,右连)的列。默认为None,join()方法默认是使用行索引进行连接。on参数指定连接列时,只能指定调用join()方法的DataFrame,而传入join()方法的DataFrame还是用行索引进行连接。
观察上面的例子,left1中有key列,而right1中没有key列,不过right1的行索引可以与left1的key列可以进行匹配,用左连接的方式得到结果。这个结果相当于如下的merge()操作。
on参数也可以指定多个列作为连接列。
on参数指定多个列作为连接列时,这些列都要在调用join()方法的DataFrame中,此时,传入join()方法的DataFrame必须为多重行索引(MultiIndex),且与on指定的列数相等,否则会报错。
假如第一个DataFrame是单行索引,第二个DataFrame是多重行索引,此时如果不指定on参数,就必须给两个DataFrame的行索引命名,并且单行索引的索引名要包含在多重行索引的索引名中,才能够合并成功,否则会报错。
四设置相同列名的后缀
lsuffix: 当两个DataFrame中有相同的列名时,使用lsuffix参数给调用join()的DataFrame设置列名后缀。
rsuffix: 当两个DataFrame中有相同的列名时,使用rsuffix参数给传入join()的DataFrame设置列名后缀。
lsuffix和rsuffix默认为空字符串,合并两个DataFrame时,join()方法不会自动给相同的列名加后缀进行区分,如果不给相同的列设置后缀会报错。只有给lsuffix和rsuffix指定值之后(即使指定相同的值也可以),合并才会成功。
五合并多个DataFrame
join()方法可以用于合并多个DataFrame,传入的时候用列表或元组的方式传入。此时不用指定lsuffix和rsuffix,即使指定了也不会生效,合并多个DataFrame时,如果有相同的列名,会自动加上_x和_y的后缀,重复多次也会循环加_x和_y。
合并多个DataFrame时,只支持用DataFrame的行索引进行连接,不能使用on参数。默认使用的是左连接,可以设置成其他的连接方式。
以上就是Pandas合并方法join()的介绍,如果需要本文代码,可以点击关注公众号“Python碎片”,然后在后台回复“pandas14”关键字获取完整代码。