Saltar al contenido

Busque String en todas las columnas de Pandas DataFrame y filtre

Nuestros programadores estrellas agotaron sus provisiones de café, por su búsqueda a tiempo completo por la respuesta, hasta que Olivia encontró el resultado en Gitea y ahora la compartimos aquí.

Solución:

los Series.str.contains El método espera un patrón de expresión regular (por defecto), no un literal string. Por lo tanto str.contains("^") coincide con el comienzo de cualquier string. Desde cada string tiene un comienzo, todo coincide. En su lugar, use str.contains("^") para que coincida con el literal ^ personaje.

Para verificar cada columna, puede usar for col in df para iterar a través de los nombres de las columnas, y luego llamar str.contains en cada columna:

mask = np.column_stack([df[col].str.contains(r"^", na=False) for col in df])
df.loc[mask.any(axis=1)]

Alternativamente, podrías pasar regex=False para str.contains para hacer la prueba usa Python in operador; pero (en general) usar expresiones regulares es más rápido.

Prueba con:

df.apply(lambda row: row.astype(str).str.contains('TEST').any(), axis=1)

Aquí hay una función para resolver el problema de realizar búsquedas de texto en todas las columnas de un marco de datos df:

def search(regex: str, df, case=False):
    """Search all the text columns of `df`, return rows with any matches."""
    textlikes = df.select_dtypes(include=[object, "string"])
    return df[
        textlikes.apply(
            lambda column: column.str.contains(regex, regex=True, case=case, na=False)
        ).any(axis=1)
    ]

Se diferencia de las respuestas existentes por permanecer en la API de pandas y adoptar que pandas es más eficiente en el procesamiento de columnas que en el procesamiento de filas. Además, esto está empaquetado como una función pura 🙂

Documentos relevantes:

  • Marco de datos.aplicar
  • El descriptor de acceso .str
  • DataFrame.cualquiera

Si haces scroll puedes encontrar las acotaciones de otros creadores, tú incluso tienes la habilidad insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *