pandas进行数据的交集与并集方式的数据合并方法


Posted in Python onJune 27, 2018

数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过pandas数据merge功能默认的行为,其实默认下求取的就是两个数据的“交集”。

有如下数据定义:

In [26]: df1
Out[26]: 
 data1 key
0  0 b
1  1 b
2  2 a
3  3 c
4  4 a
5  5 a
6  6 b
In [27]: df2
Out[27]: 
 data2 key
0  0 a
1  1 b
2  2 d
3  3 b

进行merge的结果:

In [28]: pd.merge(df1,df2)
Out[28]: 
 data1 key data2
0  0 b  1
1  0 b  3
2  1 b  1
3  1 b  3
4  6 b  1
5  6 b  3
6  2 a  0
7  4 a  0
8  5 a  0

从上面的结果中能够看出,merge的默认处理行为是求取了两组数据key的交集,但是对于key的值进行了并集的求取。其实也很好理解,如果仅仅是求取交集而数据没有任何合并那就不叫做数据合并了。

接下来试一下制定了参数的的交集数据合并处理:

In [29]: pd.merge(df1,df2,how='inner')
Out[29]: 
 data1 key data2
0  0 b  1
1  0 b  3
2  1 b  1
3  1 b  3
4  6 b  1
5  6 b  3
6  2 a  0
7  4 a  0
8  5 a  0
In [30]: result_inner = pd.merge(df1,df2,how='inner')
In [31]: result_default = pd.merge(df1,df2)
In [32]: result_inner == result_default
Out[32]: 
 data1 key data2
0 True True True
1 True True True
2 True True True
3 True True True
4 True True True
5 True True True
6 True True True
7 True True True
8 True True True

通过上面的结果可以看出:制定了参数的的交集数据合并处理的结果与数据合并方法merge的默认行为是一致的。

再试一下并集数据合并处理方法,这需要制定参数how为outer:

In [35]: result_outer = pd.merge(df1,df2,how='outer')
In [36]: result_outer
Out[36]: 
 data1 key data2
0  0.0 b 1.0
1  0.0 b 3.0
2  1.0 b 1.0
3  1.0 b 3.0
4  6.0 b 1.0
5  6.0 b 3.0
6  2.0 a 0.0
7  4.0 a 0.0
8  5.0 a 0.0
9  3.0 c NaN
10 NaN d 2.0

通过上面的执行结果可以看出:合并后的数据中的key拥有了两组数据所有的key,而数据虽然有一部分两组数据不能够重合,但也通过NaN的值进行了相应的填补。

还有一点需要注意的,那就是合并之后的数据个数。合并后的数据中,key的个数是两组数据中分别拥有的数据的笛卡尔乘积。如果其中一组没有的时候,进行合并的时候另一组数据中会创建一个NaN数值的对象与之进行合并。

以上这篇pandas进行数据的交集与并集方式的数据合并方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用PIL缩放网络图片并保存的方法
Apr 24 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
学生信息管理系统python版
Oct 17 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
利用python开发app实战的方法
Jul 09 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
python 代码运行时间获取方式详解
Sep 18 Python
pytorch显存一直变大的解决方案
Apr 08 Python
python-str,list,set间的转换实例
Jun 27 #Python
Python将多个list合并为1个list的方法
Jun 27 #Python
python进行两个表格对比的方法
Jun 27 #Python
Python快速查找list中相同部分的方法
Jun 27 #Python
Python面向对象类的继承实例详解
Jun 27 #Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 #Python
Python查找第n个子串的技巧分享
Jun 27 #Python
You might like
PHP 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
JavaScript 关键字屏蔽实现函数
2009/08/02 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法
2017/02/14 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
破解安装Pycharm的方法
2018/10/19 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Django 框架模型操作入门教程
2019/11/05 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
opencv 阈值分割的具体使用
2020/07/08 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
Notino法国:购买香水和化妆品
2019/04/15 全球购物
火锅店营销方案
2014/02/26 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
关键在于落实心得体会
2014/09/03 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
毕业论文致谢范文
2015/05/14 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏