多表拼接
表的横向拼接
连接表的类型
一对一
一对一就是待连接的两个表的公共列的一对一
df1
>>>
名次 姓名 学号 成绩
0 1 小张 100 650
1 2 小王 101 600
2 3 小李 102 578
3 4 小赵 103 550
df2
>>>
学号 班级
0 100 一班
1 101 二班
2 102 三班
3 103 四班
pd.merge(df1,df2)
>>>
名次 姓名 学号 成绩 班级
0 1 小张 100 650 一班
1 2 小王 101 600 二班
2 3 小李 102 578 三班
3 4 小赵 103 550 四班
多对一
多对一就是待连接的两个表公共列不是一对一,其中一个表的公共列有重复值,另一个表的公共列是一对一
df3
>>>
姓名 学号 f_成绩
0 小张 100 650
1 小王 101 600
2 小李 102 578
df4
>>>
学号 e_成绩
0 100 586
1 100 602
2 101 691
3 101 702
4 102 645
5 102 676
pd.merge(df3,df4, on = '学号')
>>>
姓名 学号 f_成绩 e_成绩
0 小张 100 650 586
1 小张 100 650 602
2 小王 101 600 691
3 小王 101 600 702
4 小李 102 578 645
5 小李 102 578 676
多对多
多对多就是待连接的两个表的公共列不是一对一的,且两个表的公共列都有重复值
df5
>>>
姓名 学号 f_成绩
0 小张 100 650
1 小张 100 610
2 小王 101 600
3 小李 102 578
4 小李 102 542
df6
>>>
学号 e_成绩
0 100 650
1 100 610
2 101 600
3 102 578
4 102 542
pd.merge(df5,df6)
>>>
姓名 学号 f_成绩 e_成绩
0 小张 100 650 650
1 小张 100 650 610
2 小张 100 610 650
3 小张 100 610 610
4 小王 101 600 600
5 小李 102 578 578
6 小李 102 578 542
7 小李 102 542 578
8 小李 102 542 542