isin from column python regex pandas filter

python - from - pandas select rows by condition



Pandas DataFrame filter regex (2)

No entiendo el filter DataFrame pandas .

Preparar

import pandas as pd df = pd.DataFrame( [ [''Hello'', ''World''], [''Just'', ''Wanted''], [''To'', ''Say''], [''I/'m'', ''Tired''] ] )

Problema

df.filter([0], regex=r''(Hel|Just)'', axis=0)

Esperaría que [0] especificara la primera columna como la que se debe mirar y axis=0 para especificar las filas filtrantes. Lo que obtengo es esto:

0 1 0 Hello World

Yo estaba esperando

0 1 0 Hello World 1 Just Wanted

Pregunta

  • ¿Qué me hubiera dado lo que esperaba?

Esto debería funcionar:

df[df[0].str.contains(''(Hel|Just)'', regex=True)]


Por los documentos ,

Los argumentos son mutuamente excluyentes, pero esto no se verifica

Entonces, parece que el primer argumento opcional, items=[0] triunfa sobre el tercer argumento opcional, regex=r''(Hel|Just)'' .

In [194]: df.filter([0], regex=r''(Hel|Just)'', axis=0) Out[194]: 0 1 0 Hello World

es equivalente a

In [201]: df.filter([0], axis=0) Out[201]: 0 1 0 Hello World

que simplemente selecciona la (s) fila (s) con valores de índice en [0] largo del eje 0.

Para obtener el resultado deseado, puede usar str.contains para crear una máscara booleana y usar df.loc para seleccionar filas:

In [210]: df.loc[df.iloc[:,0].str.contains(r''(Hel|Just)'')] Out[210]: 0 1 0 Hello World 1 Just Wanted