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

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

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

验证等效性需要进行比较,上一篇文章介绍了比较操作。比较操作参考:https://blog.csdn.net/weixin_43790276/article/details/116616312

==和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”关键字获取完整代码。

 

 

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小斌哥ge

非常感谢,祝你一切顺利。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值