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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
Python实现的石头剪子布代码分享
Aug 22 Python
python如何重载模块实例解析
Jan 25 Python
使用pygame模块编写贪吃蛇的实例讲解
Feb 05 Python
python读取Excel实例详解
Aug 17 Python
对Python中DataFrame选择某列值为XX的行实例详解
Jan 29 Python
Django 配置多站点多域名的实现步骤
May 17 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
pytorch中的transforms模块实例详解
Dec 31 Python
Python实现图像的垂直投影示例
Jan 17 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP中文分词 自动获取关键词介绍
2012/11/13 PHP
php设计模式之单例模式代码
2016/06/11 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
浅谈PHP之ThinkPHP框架使用详解
2020/07/21 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
JQuery select控件的相关操作实现代码
2012/09/14 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jquery validate表单验证的基本用法入门
2016/01/18 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
详解webpack编译多页面vue项目的配置问题
2017/12/11 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
Vue强制组件重新渲染的方法讨论
2020/02/03 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
深入探究Django中的Session与Cookie
2017/07/30 Python
浅谈Django REST Framework限速
2017/12/12 Python
Python实现的knn算法示例
2018/06/14 Python
使用django实现一个代码发布系统
2019/07/18 Python
python调用c++返回带成员指针的类指针实例
2019/12/12 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
优秀生推荐信范文
2013/11/28 职场文书
求职简历中的自我评价分享
2013/12/08 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
同意迁入证明模板
2014/10/26 职场文书
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫