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''.