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
df.loc[df['Col2'].isnull()]
jeśli .loc jest Twoim rodzajem.notnull()
operatora.@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
źródło