tutorial seleccionar data columnas cleaning python pandas

python - seleccionar - Consultando por NaN y otros nombres en Pandas



pandas tutorial (3)

Digamos que tengo un df marco de datos con un value columna value contiene algunos valores flotantes y algunos NaN . ¿Cómo puedo obtener la parte del marco de datos donde tenemos NaN usando la sintaxis de consulta ?

Lo siguiente, por ejemplo, no funciona:

df.query( ''(value < 10) or (value == NaN)'' )

Obtengo el name NaN is not defined (igual para df.query(''value ==NaN'') )

En términos generales, ¿hay alguna forma de usar nombres numpy en la consulta, como inf , nan , pi , e , etc.?


En general, podrías usar @local_variable_name , así que algo como

>>> pi = np.pi; nan = np.nan >>> df = pd.DataFrame({"value": [3,4,9,10,11,np.nan,12]}) >>> df.query("(value < 10) and (value > @pi)") value 1 4 2 9

funcionaría, pero nan no es igual a sí mismo, por lo que value == NaN siempre será falso. Una forma de solucionar esto es usar ese hecho y usar value != value isnan como una comprobación de isnan . Tenemos

>>> df.query("(value < 10) or (value == @nan)") value 0 3 1 4 2 9

pero

>>> df.query("(value < 10) or (value != value)") value 0 3 1 4 2 9 5 NaN


Para filas donde el value no es nulo

df.query("value == value")

Para filas donde el value es nulo

df.query("value != value")


Podrías hacer algo como esto. Nota: deberá importar el módulo numpy (as np)

df[df[''value''].apply(np.isnan)]