2013-03-06 75 views
2

「NOT_EQUAL」 從DataFrame選擇時:差 「=!」,並在大熊貓

使用not_equal給出正確的結果:

d[not_equal(d.something,None)] 

但是使用!=並不:

d[d.something != None] 

這是爲什麼?

更新,d.something D型( 'float64'), 同樣的情況也一樣,如果我嘗試選擇NaN值 d [d.something!=楠]

+0

什麼是'not_equal'? (是'np.not_equal'嗎?) – 2013-03-06 12:19:53

+0

@DSM我的錯誤,感謝我打電話給那個:)我很困惑,因爲我認爲PEP8說測試無與...:s – 2013-03-06 12:35:01

+0

你能提供在這種情況下'd.something'? – entropy 2013-03-06 12:36:34

回答

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

我會深入研究其他問題,深入研究代碼。