pandas中"!="和"not_equal"的区别
在从一个 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
。
我会进一步研究其他问题,看看代码。