Chernyavski.aa
Tengo un conjunto de datos con una gran cantidad de filas. Algunos de los valores son NaN, así:
In [91]: df
Out[91]:
1 3 1 1 1
1 3 1 1 1
2 3 1 1 1
1 1 NaN NaN NaN
1 3 1 1 1
1 1 1 1 1
Y quiero contar la cantidad de valores de NaN en cada cadena, sería así:
In [91]: list = <somecode with df>
In [92]: list
Out[91]:
[0,
0,
0,
3,
0,
0]
¿Cuál es la mejor y más rápida manera de hacerlo?
Cero
Primero podría encontrar si el elemento es NaN
o no por isnull()
y luego tomar por filas sum(axis=1)
In [195]: df.isnull().sum(axis=1)
Out[195]:
0 0
1 0
2 0
3 3
4 0
5 0
dtype: int64
Y, si desea la salida como lista, puede
In [196]: df.isnull().sum(axis=1).tolist()
Out[196]: [0, 0, 0, 3, 0, 0]
O usar count
como
In [130]: df.shape[1] - df.count(axis=1)
Out[130]:
0 0
1 0
2 0
3 3
4 0
5 0
dtype: int64
Para contar NaN en filas específicas, use
cols = ['col1', 'col2']
df['number_of_NaNs'] = df[cols].isna().sum(1)
o indexe las columnas por posición, por ejemplo, cuente NaN en las primeras 4 columnas:
df['number_of_NaNs'] = df.iloc[:, :4].isna().sum(1)
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Pregunta similar para columnas: ¿Cómo obtengo un recuento resumido de datos faltantes/NaN por columna en ‘pandas’?
– smci
17 de noviembre de 2016 a las 10:59