J'ai un pandas dataframe (df), et je veux faire quelque chose comme:
newdf = df[(df.var1 == 'a') & (df.var2 == NaN)]
J'ai essayé de remplacer NaN par np.NaN
, Ou 'NaN'
Ou 'nan'
, Etc., mais rien ne vaut True. Il n'y a pas de pd.NaN
.
Je peux utiliser df.fillna(np.nan)
avant d'évaluer l'expression ci-dessus, mais cela semble hackish et je me demande si cela va interférer avec d'autres opérations pandas) qui reposent sur la possibilité d'identifier des NaN au format pandas plus tard.
J'ai l'impression qu'il devrait y avoir une réponse facile à cette question, mais d'une manière ou d'une autre, cela m'a échappé. Tout conseil est apprécié. Merci.
Cela ne fonctionne pas car NaN
n'est égal à rien, y compris NaN
. Utilisez pd.isnull(df.var2)
à la place.
La plus simple de toutes les solutions:
filtered_df = df[df['var2'].isnull()]
Ceci filtre et vous donne les lignes qui ont seulement des valeurs NaN dans la colonne 'var2'.
Les pandas utilisent la valeur NaN de numpy
. Utilisation numpy.isnan
pour obtenir un vecteur booléen d’une série pandas.