二十五、多表拼接

本文详细介绍了Python中DataFrame的表拼接操作,包括横向拼接(merge)的连接表类型、连接键的选择、连接方式(内连接、左连接、右连接、外连接)以及重复列名处理。此外,还涵盖了纵向拼接(concat)的基本用法、索引设置和处理重叠数据的方法。
摘要由CSDN通过智能技术生成

目录

一、表的横向拼接

1、连接表的类型

(1)一对一

(2)多对一

(3)多对多

2、连接键的类型

(1)默认以公共列作为连接键

(2)用on来指定连接键

(3)分别指定左右连接键

(4)把索引列当作连接键

3、连接方式

(1)内连接(inner)

(2)左连接(left)

(3)右连接(right)

(4)外连接(outer)

4、重复列名处理

二、表的纵向拼接

1、普通合并

2、索引设置

3、重叠数据合并


一、表的横向拼接

标的横向拼接就是在横向将两个表一句公共列拼接在一起。

在Excel中实现横向拼接利用的是VLOOKUP()函数。在Python中实现横向拼接利用的merge()方法。

1、连接表的类型

连接表的类型关注的就是待连续的两个表都是什么类型,主要有3种情况:一对一,多对一,多对多。

(1)一对一

一对一就是待连接的两个表的公共列是一对一的。

如果要将两个表进行连接,那么直接使用pd.merge()方法即可,该方法会自动寻找两个表中的公共列,并将找到的公共列作为连接列。

pd.merge(df1,df2)

(2)多对一

多对一就是待连接的两个表的公共列不是一对一的,其中一个表的公共列有重复值,另一个表的公共列是唯一的。

(3)多对多

多对多就是待连接的两个表的公共列不是一对一,且两个表中的公共列都有重复值,多对多连接相当于多个对多对一连接。

2、连接键的类型

(1)默认以公共列作为连接键

如果实现没有制定要按哪个列进行拼接时,pd.merge()方法会默认寻找两个表中的公共列,然后以这个公共列作为连接键进行连接。

(2)用on来指定连接键

也可以用参数on来指定连接键,参数on一般指定的也是两个表中的公共列,其实这个时候和使用默认公共列达到的效果是一样的。

pd.merge(df1,df2,on = "公共列")

公共列可以有多列,也就是连接键可以有多个。

pd.merge(df1,df2,on = ["连接键1","连接键2"])

(3)分别指定左右连接键

当两个表中没有公共列时,这里指的是实际值一样,但列名不同,否则就无法连接了。这个时候要分别指定左表和右表的连接键,使用的是参数分别是left_on和right_on,left_on用来指明左表用作连接键的列名,right_on用来指明右表用作连接键的列名。

pd.merge(df1,df2,left_on = "左表连接键",right_on = "右表连接键")

(4)把索引列当作连接键

索引列不算是真正的列,当公共列是索引列时,就要把索引列当作连接键,使用的参数分别是left_index和right_index和left_index用来控制左表的索引,right_index用来控制右表的索引。

pd.merge(df1,df2,left_index = true ,right_index = true)

还可以把索引列和普通列混用。

pd.merge(df1,df2,left_index = true ,right_index = "连接键")

3、连接方式

(1)内连接(inner)

内连接就是取两个表中的公共部分。

pd.merge(df1,df2,on = "公共列",how = "inner")

如果不指明连接方式,则默认都是内连接。

(2)左连接(left)

左连接就是左表为基础,右表往左表上拼接。

pd.merge(df1,df2,on = "连接键" ,how = "left")

(3)右连接(right)

右连接就是以右表为基础,左表往右表上拼接。

(4)外连接(outer)

外连接就是取两个表的并集。

4、重复列名处理

两个表在进行连接是,经常会遇到列名重复的情况,在列名重复时,pd.merge()方法会自动给这些重复列名添加后缀_x,_y或_z,而且会根据表中已有的列名自行调整。当然我们也可以自定义重复的列名,只需要修改参数suffixes的值即可,默认为["_x","_y"]。

二、表的纵向拼接

标的纵向拼接是与横向拼接相对应的,横向拼接是两个表依据公共列在水平方向上进行拼接,而纵向拼接是在垂直方向进行拼接。

一般的应用场景就是将分离的若干个结构相同的数据表合并成一个数据表。

在Excel中两个结构相同的表要实现合并,只需要复制粘贴即可。

在Python中想纵向合并两个表,需要用到concat()方法。

1、普通合并

普通合并就是直接将待合并表的表名以列表的形式传给pd.concat()方法。

pd.concat([df1,df2])

2、索引设置

pd.concat()方法默认保留原表的索引,我们可以通过设置参数ignore_index()的值,让其等于true,这样就会生成一组新的索引,而不保留原表的索引。

pd.concat([df1,df2],ignore_index=true)

3、重叠数据合并

pd.concat([df1,df2],ignore_index=true).drop_duplicates()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值