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 frame
que 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