pandas进行数据的交集与并集方式的数据合并方法
作者:grey_csdn 时间:2022-05-16 08:48:08
数据合并有多种方式,其中最常见的应该就是交集和并集的求取。之前通过分析总结过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数值的对象与之进行合并。
来源:https://blog.csdn.net/grey_csdn/article/details/70194230
标签:pandas,交集,并集
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python PyQt5模块实现一个浏览器的示例代码
2022-02-22 04:23:47
![](https://img.aspxhome.com/file/2023/7/78757_0s.png)
python绘制规则网络图形实例
2021-08-31 02:28:28
windows下python和pip安装教程
2022-04-07 13:00:44
![](https://img.aspxhome.com/file/2023/6/108166_0s.jpg)
基于python 处理中文路径的终极解决方法
2023-07-21 00:47:09
Python导入父文件夹中模块并读取当前文件夹内的资源
2023-08-27 09:03:43
![](https://img.aspxhome.com/file/2023/4/94164_0s.png)
基于Python制作B站视频下载小工具
2023-11-18 11:58:50
![](https://img.aspxhome.com/file/2023/7/80417_0s.jpg)
WEB2.0网页制作标准教程(11)不用表格的菜单
2008-02-19 19:36:00
深入分析PHP引用(&)
2023-11-23 00:42:35
![](https://img.aspxhome.com/file/2023/1/55771_0s.jpg)
Django 实现Admin自动填充当前用户的示例代码
2021-12-23 17:37:26
TensorFlow实现从txt文件读取数据
2021-03-02 21:04:59
Python OpenCV实现图片上输出中文
2021-07-01 15:00:11
![](https://img.aspxhome.com/file/2023/3/115003_0s.jpg)
php判断输入不超过mysql的varchar字段的长度范围
2023-11-14 12:02:10
SWFObject1.5: 基于Javascript的Flash媒体版本检测与嵌入模块
2009-08-06 18:02:00
在python 不同时区之间的差值与转换方法
2023-10-15 12:20:57
ASP中使用FileSystemObject时提高性能的一个小技巧
2008-06-08 13:09:00
在SQL Server 2000数据仓库中使用分区
2008-12-23 13:52:00
![](https://img.aspxhome.com/file/UploadPic/200812/2008122318249748.jpg)
python实现获取序列中最小的几个元素
2023-12-24 19:11:32
14条最佳JS代码编写技巧[译]
2009-11-09 19:37:00
Python实现对字符串的加密解密方法示例
2023-08-01 19:41:13
Python pytesseract验证码识别库用法解析
2023-06-13 19:04:02