Compruebe si la columna pandas contiene todos los elementos de una lista

Tauber:

Tengo un df como esto:

frame = pd.DataFrame({'a' : ['a,b,c', 'a,c,f', 'b,d,f','a,z,c']})

Y una lista de los objetos:

letters = ['a','c']

Mi objetivo es conseguir que todas las filas desde frameque contienen, al menos, los 2 elementos enletters

Se me ocurrió con esta solución:

for i in letters:
    subframe = frame[frame['a'].str.contains(i)]

Esto me da lo que quiero, pero podría no ser la mejor solución en términos de escalabilidad. ¿Hay alguna solución 'vectorizado'? Gracias

Serge Ballesta :

Me gustaría crear una lista de la serie, y luego aplicar una vectorizado np.all:

contains = [frame['a'].str.contains(i) for i in letters]
resul = frame[np.all(contains, axis=0)]

Da como se esperaba:

       a
0  a,b,c
1  a,c,f
3  a,z,c

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=372346&siteId=1
Recomendado
Clasificación