Solución:
Ya casi estás allí, simplemente no tienes la sintaxis correcta, debería ser:
df[(df.str.contains("b") == True) & (df.str.contains("a") == False)]
Otro enfoque que podría ser más limpio si tiene muchas condiciones para aplicar sería encadenar sus filtros junto con reducir o un bucle:
from functools import reduce
filters = [("a", False), ("b", True)]
reduce(lambda df, f: df[df.str.contains(f[0]) == f[1]], filters, df)
#outputs b2
Cualquiera:
>>> ts.str.contains('b') & ~ts.str.contains('a')
0 False
1 False
2 True
3 False
dtype: bool
o use expresiones regulares:
>>> ts.str.contains('^[^a]*b[^a]*$')
0 False
1 False
2 True
3 False
dtype: bool
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)