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继承问题
May 29 Python
Python运算符重载详解及实例代码
Mar 07 Python
Python读取文件内容的三种常用方式及效率比较
Oct 07 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Python面向对象类的继承实例详解
Jun 27 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
python中几种自动微分库解析
Aug 29 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
python cv2在验证码识别中应用实例解析
Dec 25 Python
使用pytorch 筛选出一定范围的值
Jun 28 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去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
Laravel手动分页实现方法详解
2016/10/09 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
基于jQuery的倒计时实现代码
2012/05/30 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
jQuery 动态云标签插件
2014/11/11 Javascript
Javascript变量的作用域和作用域链详解
2015/04/02 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
全面理解闭包机制
2016/07/11 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
vue-quill-editor+plupload富文本编辑器实例详解
2018/10/19 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
Python加pyGame实现的简单拼图游戏实例
2015/05/15 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python爬取微信公众号文章的方法
2019/02/26 Python
解决pyqt5中QToolButton无法使用的问题
2019/06/21 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
Pycharm中使用git进行合作开发的教程详解
2020/11/17 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
采购文员岗位职责
2013/11/20 职场文书
大课间活动制度
2014/01/18 职场文书
学生打架检讨书
2014/02/14 职场文书
个人委托书如何写
2014/09/25 职场文书
2014年稽查工作总结
2014/12/20 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
Java 死锁解决方案
2022/05/11 Java/Android