You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Pandas中的不等于(neq)比较结果存在不一致性?

问题成因解释

这个差异的核心是NaN(非数值)的特殊比较规则,拆解来看:

  • 首先看数组的类型转换:
    你用np.array([None,2.3,1.4])创建数组时,因为数组里同时有None和浮点数,numpy会自动把整个数组转为float64类型,其中None会被转换成浮点体系里的特殊值——NaN。

  • 然后是两种比较的规则区别:

    1. 整体矢量化比较(s_None != s_None):
      Pandas(底层基于numpy)为了方便用户快速定位缺失值,对矢量化的不等比较做了特殊逻辑:只要元素是NaN,!=的结果就返回True。所以这行代码的输出其实和s_None.isna()完全一致,第一个元素是NaN,所以取索引0的结果是True。
    2. 逐元素直接比较(s_None[0] != s_None[0]):
      当你直接取出单个NaN元素做比较时,遵循的是IEEE浮点数的标准规则:NaN和任何值(包括它自己)的比较结果都是False。所以这里NaN != NaN会返回False。

内容的提问来源于stack exchange,提问作者P.Jo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 21:42:05