mysql 内连接_就你Sql有连接咩~我Pandas也有

b9af8c83486799fbb0f5ca52e4d36e27.png

我们今天来看看这个Sql的连接和Pandas的连接有啥一样或者不一样的地方,首先我们在Mysql和Pandas里面各自建立两个成绩表,命名为left1和right1,请接着看

Mysql的图表:

33d8eafc033c69ae733643609b1c655e.png
left1

0dfd74ed7e8c788e5b3e1549ef24dea9.png
right1

Pandas的图表:

顺便把代码也给你们啊,这么基础的不会的活该抄一百遍

d295b5a7fe694eb2235b6ba6d78c2f59.png
left1

0a1f22a44bdce6f26e10a80f343f517c.png
right1

我们知道在Mysql中,有内连接(inner join),左外连接(left join),右外连接(right join)和全外连接(full join)四种连接方法,而在Pandas中同样也有这四种连接方法,首先我声明下都是通过sid来连接的,下面就让我们一一来看下这四中连接在两个环境里是如何呈现的

首先是内连接(inner join):

先看Mysql的代码

select * from 
left1 a inner join right1 b
on a.sid=b.sid;

dd1b35995ca9520e251ed6313cfb7a60.png
查询结果

再来看Pandas的代码

pd

76c82c8a8c2dc16d175ecdfe1cd39ca0.png

按照结果来看呢,Mysql把两个表的sid都查询出来了,但是Pandas自动删除了重复的sid列~

接着来看下左外连接(left join):

先看Mysql的代码

select * from 
left1 a left join right1 b
on a.sid=b.sid;

e51d2728623bb676613de4273bcddad4.png

再来看Pandas的代码

pd.merge(left1,right1,on='sid',how='left')

41cbf425386bcfdd8ab7f1f4c5b65f5f.png

对比二者的结果我们可以看到除了上面提到过的Pandas会删除重复列之外,二者现实的无效值一个是null,一个是NAN,其实本质都是一样的,他们都是非空的无效值~

再来看下右外连接(right join):

首先是Mysql代码

select * from 
left1 a right join right1 b
on a.sid=b.sid;

eeea77567687ac997962e013d6db5087.png

Pandas代码:

pd.merge(left1,right1,on='sid',how='right')

5916c26c9c7fd4e063761e28e31acc5d.png

最后是全外连接(full outer join):

mysql呢是不支持全外连接的,一般只能通过左连接+union+右连接实现

select * from 
left1 a left join right1 b
on a.sid=b.sid
UNION
select * from 
left1 a right join right1 b
on a.sid=b.sid;

fedc5a901cc6a0831ff1d544afb7c8f5.png

再看看Pandas的代码

pd.merge(left1,right1,on='sid',how='outer')

b8825e52e034f8137583c29133e20cca.png

uhhhhh。。好像是差不多的,其实Pandas还有另外一种方法可以进行连接,下次开贴再讲吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值