python - exclude - Cómo filtrar en NaN(pandas)?
python dropna subset (3)
Tengo un marco de datos de pandas (df), y quiero hacer algo como:
newdf = df[(df.var1 == ''a'') & (df.var2 == NaN)]
He intentado reemplazar NaN con np.NaN , o ''NaN'' o ''nan'' , etc., pero nada se evalúa como Verdadero. No hay pd.NaN .
Puedo usar df.fillna(np.nan) antes de evaluar la expresión anterior, pero eso se siente hackish y me pregunto si interferirá con otras operaciones de pandas que dependan de poder identificar más tarde NaN en formato pandas.
Me da la sensación de que debería haber una respuesta fácil a esta pregunta, pero de alguna manera me ha eludido. Cualquier consejo es apreciado. Gracias.
Pandas usa el valor NaN de numpy . Use numpy.isnan para obtener un vector booleano de una serie de pandas.
Esto no funciona porque NaN no es igual a nada, incluido NaN . Use pd.isnull(df.var2) lugar.
La más simple de todas las soluciones:
filtered_df = df[df[''var2''].isnull()]
Esto filtra y le da filas que tienen solo valores NaN en la columna ''var2''.