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 相关文章推荐
把项目从Python2.x移植到Python3.x的经验总结
Apr 20 Python
Django中的“惰性翻译”方法的相关使用
Jul 27 Python
python爬虫框架talonspider简单介绍
Jun 09 Python
Python学习入门之区块链详解
Jul 25 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
Python设计密码强度校验程序
Jul 30 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
使用numpy nonzero 找出非0元素
May 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反转字符串函数strrev()函数的用法
2012/02/04 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
JavaScript及jquey实现多个数组的合并操作
2014/09/06 Javascript
jQuery异步获取json数据方法汇总
2014/12/22 Javascript
使用js画图之画切线
2015/01/12 Javascript
jquery实现聚光灯效果的方法
2015/02/06 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
shiro授权的实现原理
2017/09/21 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Python实现快速排序的方法详解
2019/10/25 Python
python实现梯度法 python最速下降法
2020/03/24 Python
如何写python的配置文件
2020/06/07 Python
python中PyQuery库用法分享
2021/01/15 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
企业行政文员岗位职责
2013/12/03 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
网络管理专业求职信
2014/03/15 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
男女朋友协议书
2014/04/23 职场文书
大学活动总结格式
2014/04/29 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
2016年少先队活动总结
2016/04/06 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
SpringRetry重试框架的具体使用
2021/07/25 Java/Android