前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas知识点-合并操作join

Pandas知识点-合并操作join

作者头像
Python碎片公众号
发布2021-06-24 15:48:33
2.7K0
发布2021-06-24 15:48:33
举报
文章被收录于专栏:Python碎片公众号的专栏

在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”关键字获取完整代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档