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,交集,并集
0
投稿

猜你喜欢

  • Mysql安装与配置调优及修改root密码的方法

    2024-01-15 19:35:06
  • Qzoneing主题视觉设计分享

    2009-07-21 18:12:00
  • Python使用win32 COM实现Excel的写入与保存功能示例

    2021-03-30 11:28:50
  • Oracle 8i字符集乱码问题析及其解决办法

    2010-07-26 13:29:00
  • ASP教程:制作登陆验证页面程序

    2008-10-23 15:00:00
  • MySQL简化输入小技巧

    2024-01-13 15:49:33
  • PyQT5 emit 和 connect的用法详解

    2022-02-08 15:15:11
  • python map比for循环快在哪

    2021-06-16 09:39:04
  • 在pycharm中debug 实时查看数据操作(交互式)

    2023-01-19 08:31:11
  • js实现九宫格抽奖

    2024-04-17 10:34:36
  • python使用matplotlib绘制雷达图

    2022-10-10 16:37:41
  • Python实现删除windows下的长路径文件

    2023-06-07 22:33:18
  • python matplotlib中文显示参数设置解析

    2022-11-18 14:11:41
  • python3库numpy数组属性的查看方法

    2023-07-19 07:25:50
  • Django REST 异常处理详解

    2023-06-19 02:40:34
  • PHP addslashes()函数讲解

    2023-06-04 04:28:24
  • 利用golang进行OpenCV学习和开发的步骤

    2024-05-22 10:16:56
  • Python的Django框架中的Context使用

    2023-09-19 15:29:24
  • Sql Server 无日志文件附加

    2010-05-30 11:23:00
  • Redis数据库基础与ASP.NET Core缓存实现

    2024-01-26 18:19:09
  • asp之家 网络编程 m.aspxhome.com