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 相关文章推荐
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
Python过滤列表用法实例分析
Apr 29 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
详解PyCharm+QTDesigner+PyUIC使用教程
Jun 13 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
Python打印特殊符号及对应编码解析
May 07 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
python如何实现word批量转HTML
Sep 30 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
python 实现IP子网计算
Feb 18 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实现的获取URL信息的类
2007/01/02 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
Display SQL Server Version Information
2007/06/21 Javascript
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
bootstrap table表格客户端分页实例
2017/08/07 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
Angular脚手架开发的实现步骤
2019/04/09 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
[03:12]TI9战队档案 - Virtus Pro
2019/08/20 DOTA
Python连接PostgreSQL数据库的方法
2016/11/28 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
数据库什么时候应该被重组
2012/11/02 面试题
通报表扬范文
2015/01/17 职场文书
施工员岗位职责
2015/02/10 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
罗马假日观后感
2015/06/08 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
队列队形口号
2015/12/25 职场文书
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers