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中使用PyQt把网页转换成PDF操作代码实例
Apr 23 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python3实现逐字输出的方法
Jan 23 Python
使用python去除图片白色像素的实例
Dec 12 Python
python装饰器使用实例详解
Dec 14 Python
Python变量作用域LEGB用法解析
Feb 04 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
解决python运行启动报错问题
Jun 01 Python
python创建文本文件的简单方法
Aug 30 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 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实现文件安全下载
2006/10/09 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
推荐40款强大的 jQuery 导航插件和教程(上篇)
2012/09/14 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
JS实现闪动的title消息提醒效果
2014/06/20 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
vue项目打包部署到服务器的方法示例
2018/08/27 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
2018/12/30 Python
Python通过文本和图片生成词云图
2020/05/21 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
Django实现随机图形验证码的示例
2020/10/15 Python
统计每一学生的平均成绩
2014/06/06 面试题
会计找工作求职信范文
2013/12/09 职场文书
成功的餐厅经营创业计划书
2014/01/15 职场文书
信访工作经验交流材料
2014/05/23 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
工作简历的自我评价
2019/05/16 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python
Python时间操作之pytz模块使用详解
2022/06/14 Python
SpringBoot Http远程调用的方法
2022/08/14 Java/Android