Jak wybrać wiersze z NaN w danej kolumnie?

105

Biorąc pod uwagę tę ramkę danych, jak wybrać tylko te wiersze, w których „Col2” jest równe 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

Wynik powinien być taki:

Out[57]: 
   0   1   2
1  0 NaN   0
Dinozaur
źródło

Odpowiedzi:

183

Spróbuj wykonać następujące czynności:

df[df['Col2'].isnull()]
qbzenker
źródło
10
Alternatywnie, df.loc[df['Col2'].isnull()]jeśli .loc jest Twoim rodzajem
Alexander,
2
P: Jak zanegować thi, tj. Gdzie dane w kolumnie „nie są puste”? O: używając .notnull()operatora.
sk
10

@qbzenker zapewnił najbardziej idiomatyczną metodę IMO

Oto kilka alternatyw:

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
MaxU
źródło