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 相关文章推荐
python33 urllib2使用方法细节讲解
Dec 03 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
python实现简易通讯录修改版
Mar 13 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
Python Pexpect库的简单使用方法
Jan 29 Python
Opencv实现抠图背景图替换功能
May 21 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
浅谈python锁与死锁问题
Aug 14 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实现的MongoDB数据库操作类分享
2014/05/12 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
node-webkit打包成exe文件被360误报木马的解决方法
2015/03/11 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
js实现随机点名功能
2020/12/23 Javascript
[02:51]DOTA2 Supermajor小组分组对阵抽签仪式
2018/06/01 DOTA
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
Python的类实例属性访问规则探讨
2015/01/30 Python
json跨域调用python的方法详解
2017/01/11 Python
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
我们的节日春节活动方案
2014/08/22 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
中国梦党课学习心得体会
2016/01/05 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS