文章目录
pandas 多表拼接
1.表的横向拼接
表的横向拼接就是在横向将两个表依据公共列拼接在一起。
1.1 连接表的类型
连接表的类型关注的就是待连接的两个表都是什么类型,主要有3种情况:一对一、多对一、多对多。
- 一对一:一对一就是待连接的两个表的公共列是一对一的
- 多对多:待连接的两个表的公共列不是一对一的,且两个表中的公共列都有重复值,多对多连接相当于多个多对一连接
print(pd.merge(df1,df2))
pd.merge() 方法即可,该方法会自动寻找两个表中的公共列,并将找到的公共列作为连接列。
- 多对一:待连接的两个表的公共列不是一对一的,其中一个表的公共列有重复值,另一个表的公共列是唯一的。
print(pd.merge(df1,df2,on = "学号"))
1.2 连接键的类型
默认以公共列作为连接键:如果事先没有指定要按哪个列进行拼接时,pd.merge()方法会默认寻找两个表中的公共列,然后以这个公共列作为连接键进行连接(示例见图1-1,1-2)
用on来指定连接键:也可以用参数on来指定连接键,参数on一般指定的也是两个表中的公共列,其实这个时候和使用默认公共列达到的效果是一样的(示例见图1-3)
公共列可以有多列,也就是连接键可以有多个:
print(df1)
print(df2)
print(pd.merge(df1,df2,on = ["姓名","学号"]))
分别指定左右连接键:当两个表中没有公共列时,这里指的是实际值一样,但列名不同,否则就无法连接了。这个时候要分别指定左表和右表的连接键,使用的参数分别是left_on和rigth_on, left_on用来指明左表用作连接键的列名,right_on用来指明右表用作连接键的列名。
print(df1)
print(df2)