前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas知识点-equals()与==的区别

Pandas知识点-equals()与==的区别

作者头像
Python碎片公众号
发布2021-06-24 15:46:07
2.1K0
发布2021-06-24 15:46:07
举报

在Pandas中,equals()方法用于验证数据是否等效。

验证等效性需要进行比较,上一篇文章介绍了比较操作。比较操作参考:Pandas知识点-比较操作

==和eq()方法可以用于比较Pandas中的数据,那equals()和它们有什么区别呢?本文会进行介绍。

一、返回值不同

equals()方法的返回值是一个布尔值。如果两个被比较数据中的所有元素都相同,则equals()返回True,否则返回False。

==比较两个DataFrame时,结果是一个由布尔值构成的DataFrame,比较两个Series时,结果是一个由布尔值构成的Series。

equals()的返回值相当于用numpy中的all()函数对==的结果再做一次判断。

不过,因为equals()和==的内部判断是有差异的,所以equals()与np.all(df1==df2)并不完全等价,可以继续看下面的介绍。

二、索引值对结果的影响不同

equals()比较两个DataFrame或Series,索引值相等的列或行可以进行比较,如索引1和1.0分别是整数和浮点数,但值是相等的,对应的行或列可以进行比较。

==比较两个DataFrame或Series,索引值相等时也可以进行比较,不过结果的索引会有变化,取决于比较的顺序。具体来说,比较结果的索引与==左边的DataFrame或Series相同。而使用eq()方法时,比较结果的索引与调用eq()的DataFrame或Series相同。

三、对空值的判断结果不同

equals()比较时,DataFrame或Series中的空值可以判断为相等。具体来说,两个np.NaN,两个None,两个pd.NaT,np.NaN与None这四种情况的比较结果都是相等的。而pd.NaT与np.NaN和None的比较结果为不相等。

==比较时,空值的比较结果都是不相等。

从Python解释器层面来判断,两个np.NaN和两个pd.NaT的比较结果都不相等,所以用==比较时,DataFrame中对应位置的结果为False。两个None的比较结果虽然相等,但因为在的DataFrame中None表示的是np.NaN,所以比较结果也为False。np.NaN和None比较也一样,结果为False。这也是前面说equals()与np.all(df1==df2)不完全等价的原因。

在判断两个DataFrame或Series是否等效时,空值对我们来说都是一样的。我们期望的结果是将空值判断为相等,这样可以避免空值对其他数据比较结果的干扰。equals()用于判断两个数据是否等效,刚好可以用于这样的场景。当然,也可以先将空值替换成其他值后再比较,那就是另一种方式了。

四、与array的比较不同

equals()比较DataFrame和array时,即使DataFrame与array的形状相同,数据也完全相同,比较结果也是False。原因是array没有索引,而equals()支持传入的参数是DataFrame或Series,不支持array。

==可以将DataFrame与array进行比较,比较结果为DataFrame。

以上就是Pandas中equals()与==的区别介绍,如果需要本文代码,可以点击关注公众号“Python碎片”,然后在后台回复“pandas11”关键字获取完整代码。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 碎片 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档