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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
Python+request+unittest实现接口测试框架集成实例
Mar 16 Python
Python 读写文件的操作代码
Sep 20 Python
python使用Matplotlib绘制分段函数
Sep 25 Python
Python绘制热力图示例
Sep 27 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
查看端口并杀进程python脚本代码
Dec 17 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
python selenium xpath定位操作
Sep 01 Python
Python turtle编写简单的球类小游戏
Mar 31 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 json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
10 个经典PHP函数
2013/10/17 PHP
php中字符集转换iconv函数使用总结
2014/10/11 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
运用Windows XP附带的Msicuu.exe、Msizap.exe来彻底卸载顽固程序
2007/04/21 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
javascript函数式编程实例分析
2015/04/25 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
vux uploader 图片上传组件的安装使用方法
2018/05/15 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
2018/05/15 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Python实现删除文件但保留指定文件
2015/06/21 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
Python实现命令行通讯录实例教程
2016/08/18 Python
python中判断文件编码的chardet(实例讲解)
2017/12/21 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
Everything But Water官网:美国泳装品牌
2019/03/17 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
程序员机试试题汇总
2012/03/07 面试题
联谊会开场白
2015/06/01 职场文书
Python中相见恨晚的技巧
2021/04/13 Python
PyTorch的Debug指南
2021/05/07 Python
Go timer如何调度
2021/06/09 Golang
python非标准时间的转换
2021/07/25 Python
Python编程super应用场景及示例解析
2021/10/05 Python