2016-07-22 91 views
1

因此,基本上数据框中的列有Nan和float,我想用apply来计算列中的值。如果该值为nan,则返回else,计算。大熊猫 - dataframe.apply(lambda x:x是np.nan)不起作用

但是在lambda中看起来像x是np.nan并不能给我正确的答案。这里是一个例子

In[6]: df = pd.DataFrame({'A':[np.nan,np.nan,np.nan,np.nan,np.nan,np.nan]}) 
In[7]: df.A.apply(lambda x: x is np.nan) 

Out[7]: 
0 False 
1 False 
2 False 
3 False 
4 False 
5 False 

有没有人知道原因?

回答

2

第一件事第一件事。为了得到你想要的东西:

df.A.isnull() 

其次,np.nan是没有可比性。按设计np.nan == np.nan是假的。

为了解决这个问题,熊猫和numpy有特定的功能来测试它是否为空。你可以:

df.A.apply(pd.isnull) 

但是,这是同样的事情:

df.A.isnull() 
那我上面提到的