Tengo un dataframe de pandas donde una columna contiene listas y me gustaría seleccionar las filas donde las listas no están vacías.
Datos de ejemplo:
df = pd.DataFrame({'letter': ["a", "b", "c", "d", "e"], 'my_list':[[0,1,2],[1,2],[],[],[0,1]]}) df letter my_list 0 a [0, 1, 2] 1 b [1, 2] 2 c [] 3 d [] 4 e [0, 1]
Lo que me gustaria
df letter my_list 0 a [0, 1, 2] 1 b [1, 2] 4 e [0, 1]
Lo que estoy tratando
df[df.my_list.map(lambda x: if len(x) !=0)]
… que devuelve un error de syntax no válido. ¿Alguna sugerencia?
Las listas vacías se evalúan como False
en un contexto booleano
df[df.my_list.astype(bool)] letter my_list 0 a [0, 1, 2] 1 b [1, 2] 4 e [0, 1]
O puede seguir su propia lógica usando la longitud de la lista para determinar mantener o no.
df[df.my_list.str.len().gt(0)] Out[1707]: letter my_list 0 a [0, 1, 2] 1 b [1, 2] 4 e [0, 1]