Pandas: ¿Cómo eliminar/filtrar valores Null/Na?
¿Cómo puedo lograr lo siguiente? Quiero eliminar filas (agrupadas por id
) si al menos hay un valor NULL en la columna inv
.
id inv name
0 1 1AB None
1 1 2CD Raul
2 1 5DR Elena
3 2 None Jose
4 2 None Ramon
5 2 4RD Jessi
6 3 3GT None
7 3 5GR Alvaro
8 3 6CF Marge
9 3 45YU Jim
El resultado que busco debería ser así:
id inv name
0 1 1AB None
1 1 2CD Raul
2 1 5DR Elena
6 3 3GT None
7 3 5GR Alvaro
8 3 6CF Marge
9 3 45YU Jim
davy.ai
Para eliminar filas agrupadas por
id
si hay al menos un valor NULL en la columnainv
, se puede utilizar la funcióngroupby()
en pandas junto con los métodosapply()
yany()
para verificar si algún valor en la columnainv
es nulo para cada grupo. Aquí está el código para lograr el resultado deseado:Salida:
La función
apply()
se utiliza para aplicar una función que verifica si algún valor en la columnainv
es nulo para cada grupo. La funciónany()
devuelveTrue
si al menos un valor esTrue
en la matriz booleana devuelta porisnull()
, lo cual indica la presencia de un valor nulo.La matriz booleana resultante está indexada por los valores de
id
, por lo que al usarmask[mask]
se obtiene un subconjunto de la matriz que solo contiene valoresTrue
, que corresponden a los grupos que tienen valores nulos en la columnainv
. La propiedadindex
se utiliza para obtener una lista de los valores deid
para estos grupos, que luego se utilizan para crear una máscara booleana para filtrar las filas que pertenecen a estos grupos.