2016-07-22 6 views
1

Also im Grunde eine Spalte in Dataframe Nan und float, möchte ich anwenden, um den Wert in der Spalte zu berechnen. Wenn der Wert nan ist, dann gebe sonst, calculate zurück.Pandas - Dataframe.apply (lambad x: x ist np.nan) funktioniert nicht

Aber sieht aus wie x ist np.nan in Lambda gibt mir nicht die richtige Antwort. Hier ist ein Beispiel

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 

Kennt jemand den Grund?

Antwort

2

Erste Dinge zuerst. Zu bekommen, was Sie wollen:

df.A.isnull() 

Zweitens ist np.nan nicht vergleichbar. Nach Entwurf np.nan == np.nan ist False.

Um dies zu umgehen, haben pandas und numpy bestimmte Funktionen, um zu testen, ob es null ist. Sie könnten:

df.A.apply(pd.isnull) 

Aber das ist das Gleiche wie:

df.A.isnull() 

, die ich oben erwähnt.

Verwandte Themen