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解惑之整数比较详解
Apr 24 Python
Python中异常重试的解决方案详解
May 05 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
CentOS 7 安装python3.7.1的方法及注意事项
Nov 01 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
python实现电子书翻页小程序
Jul 23 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
python实现连续变量最优分箱详解--CART算法
Nov 22 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
Python制作数据预测集成工具(值得收藏)
Aug 21 Python
Python中的流程控制详解
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检测图片木马多进制编程实践
2013/04/11 PHP
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
Laravel5框架自定义错误页面配置操作示例
2019/04/17 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
根据对象的某一属性进行排序的js代码(如:name,age)
2010/08/10 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
简单介绍CSS3中Media Query的使用
2015/07/07 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
美国在线奢侈品寄售商店:Luxury Garage Sale
2018/08/19 全球购物
大学生毕业自我评价范文分享
2013/11/11 职场文书
车辆安全检查制度
2014/01/12 职场文书
高中生的自我评价
2014/03/04 职场文书
物业管理专业求职信
2014/06/11 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书