2

从 中选择时DataFrame

使用not_equal给出正确的结果:

d[not_equal(d.something,None)]

但是使用!=不会:

d[d.something != None] 

为什么是这样?

更新,d.something dtype('float64'),如果我尝试选择 NaN 值 d[d.something != nan],情况也是如此

4

1 回答 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

这似乎倒退了。但是,当您按照“如果它不是一个数字,它就不能等于任何东西”来思考第一个问题时,它就会变得更加清晰。 ==将始终作为任何一方返回FalseNaN的,如果你解释a != bnot (a == b),第二个也是有道理的。这可以解释部分问题。你d[d.something != NaN]总会回来d的。

我将通过深入研究代码来更多地研究另一个问题。

于 2013-03-06T14:43:13.947 回答