work with tutorial seleccionar how functions filas fila example eliminar data columnas python pandas null nan

python - with - seleccionar columnas de un dataframe pandas



Python Pandas ¿Cómo seleccionar filas con uno o más valores nulos de un DataFrame sin listar columnas explícitamente? (2)

Tengo un marco de datos con ~ 300K filas y ~ 40 columnas. Quiero averiguar si alguna de las filas contiene valores nulos, y poner estas filas ''nulas'' en un marco de datos separado para que pueda explorarlas fácilmente.

Puedo crear una máscara explícitamente:

mask=False for col in df.columns: mask = mask | df[col].isnull() dfnulls = df[mask]

O puedo hacer algo como:

df.ix[df.index[(df.T == np.nan).sum() > 1]]

¿Hay una manera más elegante de hacerlo (ubicar filas con nulos en ellas)?


[Actualizado para adaptarse a los pandas modernos, que tiene isnull como método de DataFrame s ..]

Puede usar isnull y any para construir una serie booleana y usarla para indexar en su marco:

>>> df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)]) >>> df.isnull() 0 1 2 0 False False False 1 False True False 2 False False True 3 False False False 4 False False False >>> df.isnull().any(axis=1) 0 False 1 True 2 True 3 False 4 False dtype: bool >>> df[df.isnull().any(axis=1)] 0 1 2 1 0 NaN 0 2 0 0 NaN

[Para pandas mayores:]

Puede usar la función isnull lugar del método:

In [56]: df = pd.DataFrame([range(3), [0, np.NaN, 0], [0, 0, np.NaN], range(3), range(3)]) 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 In [58]: pd.isnull(df) Out[58]: 0 1 2 0 False False False 1 False True False 2 False False True 3 False False False 4 False False False In [59]: pd.isnull(df).any(axis=1) Out[59]: 0 False 1 True 2 True 3 False 4 False

llevando a lo bastante compacto:

In [60]: df[pd.isnull(df).any(axis=1)] Out[60]: 0 1 2 1 0 NaN 0 2 0 0 NaN


nans = lambda df: df[df.isnull().any(axis=1)]

luego, cuando lo necesite, puede escribir:

nans(your_dataframe)