首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小白学 Python 数据分析:Pandas 数据表拼接

人生苦短,我用 Python

引言

说到数据表拼接,就不得不提一下 SQL ,对于熟悉 SQL 的同学来讲,这并不是一个难以理解的概念,数据表之间的关系可以分为以下这三种:

一对一

两个表之间的公共列是一对一的。

这里的示例我们就不用图片了,直接使用代码来做展示,原因嘛就是小编懒的画了:

这里可以很直观的看到,这两个表的编号是公共列,并且唯一对应。

如果我们要讲这两个表进行连接操作,需要使用方法:

在我们使用方法的时候,方法会自动寻找两个表中的公共列,并且自动的进行对应操作。

一对多

两个表之间的公共列不是一对一的,而是其中一个表的公共列是唯一的,另一个表的公共列则会有重复的数据。

从上面这两个 df 中可以看到, df1 中的编号在 df3 中会对应多条数据,我们在对这两个 df 进行连接操作的时候,需要使用属性指明判断的条件:

多对多

两个表之间的公共列都是会有重复数据的,相当于是多个一对多。

注意理解多个一对多,这里的逻辑稍微有点绕,小编在第一次接触 SQL 的时候实际上是无法理解的。

我们这里新建一个 df4 ,新增一个编号为 100 的小黑,还是通过编号对 df4 和 df3 进行连接操作:

连接方式

学过 SQL 的同学都知道, SQL 中连接分为内连接、左连接、右连接和外连接,同样在 Pandas 也是一样的。

内连接

内连接就是取两个表中公共的部分,我们重新创建一个 df5 ,在 df5 中只有编号 100 和 200 能和前面的数据保持一致:

这里属性是用来指定连接类型的。

左连接

左连接就是已左表为基础,右表像左表上拼数据:

可以看到,在 df5 中,编号 600 和 700 的两条数据在 df3 中没有,所以 分数_y 的值为 NaN 。

右连接

右连接正好和上面的左连接相反,已右表为基础,左表往右表上拼数据:

外连接

外连接就是两个表的并集:

纵向拼接

顾名思义,纵向拼接就是在纵向上对两个表进行拼接,当然这需要两个表具有相同的结构,前面我们介绍的拼接方式都在横向上进行拼接。

这里我们再加入一个 df6 ,使用 df5 和 df6 演示纵向拼接,在 Pandas 中使用纵向拼接使用的方法是:

当我们使用以后,发现索引还是保留了原有的索引,看着很不舒服,这时我们可以设置参数,让其不在保留原有索引,而是生成新的索引:

本篇的分享到这里就算结束,如果有 SQL 基础的同学看起来应该毫无压力,没有基础的同学推荐自己动手试一下,很多看着不是很理解的东西一动手就立马打通任督二脉。

示例代码

老规矩,所有的示例代码都会上传至代码管理仓库 Github 和 Gitee 上,方便大家取用。

示例代码-Github:https://github.com/meteor1993/python-learning/tree/master/python-data-analysis/pandas-demo

示例代码-Gitee:https://gitee.com/inwsy/python-learning/tree/master/python-data-analysis/pandas-demo

感谢阅读

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200306A062P100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券