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函数式编程
Jun 09 Python
python中from module import * 的一个坑
Jul 20 Python
Python随机生成彩票号码的方法
Mar 05 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
详解 Python 读写XML文件的实例
Aug 02 Python
浅析Python数据处理
May 02 Python
python3+selenium实现126邮箱登陆并发送邮件功能
Jan 23 Python
python时间序列按频率生成日期的方法
May 14 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
利用Pycharm连接服务器的全过程记录
Jul 01 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代码
2012/06/08 PHP
php生成随机密码自定义函数代码(简单快速)
2014/05/10 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
PyTorch上搭建简单神经网络实现回归和分类的示例
2018/04/28 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
python 叠加等边三角形的绘制的实现
2019/08/14 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
2020/04/17 Python
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
工程力学专业自荐信范文
2014/03/17 职场文书
汽修专业自荐信
2014/07/07 职场文书
2016公司年会通知范文
2015/04/25 职场文书
解决IDEA翻译插件Translation报错更新TTK失败不能使用
2022/04/24 Python