Comment sélectionner des lignes avec NaN dans une colonne particulière?


104

Compte tenu de ce dataframe, comment sélectionner uniquement les lignes qui ont "Col2" égal à NaN?

In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)], columns=["Col1", "Col2", "Col3"])

In [57]: df
Out[57]: 
   0   1   2
0  0   1   2
1  0 NaN   0
2  0   0 NaN
3  0   1   2
4  0   1   2

Le résultat devrait être celui-ci:

Out[57]: 
   0   1   2
1  0 NaN   0

Réponses:


180

Essayez ce qui suit:

df[df['Col2'].isnull()]

10
Alternativement, df.loc[df['Col2'].isnull()]si .loc est votre genre de chose
Alexander

2
Q: Comment nier thi, c'est-à-dire où les données de la colonne "ne sont pas nulles"? R: en utilisant l' .notnull()opérateur.
sk

10

@qbzenker a fourni la méthode la plus idiomatique IMO

Voici quelques alternatives:

In [28]: df.query('Col2 != Col2') # Using the fact that: np.nan != np.nan
Out[28]:
   Col1  Col2  Col3
1     0   NaN   0.0

In [29]: df[np.isnan(df.Col2)]
Out[29]:
   Col1  Col2  Col3
1     0   NaN   0.0
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.