从DataFrame
中选择时:
使用not_equal
会得到正确的结果:
d[not_equal(d.something,None)]
但是使用!=
不会:
d[d.something != None]
为什么会这样?
更新,d.something dtype('float64'), 如果我尝试选择NaN值,情况也是如此 d [d.something!= nan]
答案 0 :(得分: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
这可能看起来倒退了。然而,当你想到第一条“如果它不是一个数字,它不能等于任何东西”时,它就会变得更清晰。 ==
将始终以False
作为任意一方返回NaN
。如果您将a != b
解释为not (a == b)
,那么第二个也是有道理的。这可以解释部分问题。您的d[d.something != NaN]
将始终返回d
。
我将通过挖掘代码来深入研究另一个问题。