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脚本日志功能
Aug 14 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
Nov 14 Python
使用python实现ANN
Dec 20 Python
Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容
Feb 23 Python
Pyinstaller将py打包成exe的实例
Mar 31 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
详解通过API管理或定制开发ECS实例
Sep 30 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
Python文件操作方法详解
Feb 09 Python
python实现udp聊天窗口
Mar 31 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 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脚本过滤用户上传的图片
2015/07/03 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
ThinkPHP 5.x远程命令执行漏洞复现
2019/09/23 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
解析javascript图片懒加载与预加载的分析总结
2016/10/27 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
django基于restframework的CBV封装详解
2019/08/08 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
生物科学专业毕业生求职信
2014/06/02 职场文书
公务员年度考核评语
2014/12/31 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
java设计模式--七大原则详解
2021/07/21 Java/Android
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS