pandas中"!="和"not_equal"的区别

2 投票
1 回答
3832 浏览
提问于 2025-04-17 18:07

在从一个 DataFrame 中选择数据时:

使用 not_equal 可以得到正确的结果:

d[not_equal(d.something,None)]

但是使用 != 就不行:

d[d.something != None] 

这是为什么呢?

更新一下,d.something 的数据类型是 'float64',如果我尝试选择 NaN 值,情况也是一样的:

d[d.something != nan]

1 个回答

1

我来简单说一下“如果我尝试选择NaN值 d[d.something != nan] 的情况。”

首先,你需要知道NaN(不是一个数字)和另一个NaN比较时,它们不会被认为是相等的:

In [40]: numpy.NaN == numpy.NaN
Out[40]: False

In [41]: numpy.NaN != numpy.NaN
Out[41]: True

这可能听起来有点反常。不过,当你把它理解为“如果它不是一个数字,那就不能和任何东西相等”时,就会更清楚了。== 在任何一边是NaN时,结果总是返回 False。那么,如果你把 a != b 理解为 not (a == b),第二个表达式也就能理解了。这可能解释了你遇到的一部分问题。你的 d[d.something != NaN] 总是会返回 d

我会进一步研究其他问题,看看代码。

撰写回答