remove exclude eliminar dropnull dropna delete python pandas nan

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