Python数据分析--多表拼接

表的横向拼接

连接表的类型

一对一

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

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
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值