Filtrado de pandas para múltiples subcadenas en serie
Necesito filtrar filas en unpandas
marco de datos para que una columna de cadena específica contenga al menos una de una lista de subcadenas proporcionadas. Las subcadenas pueden tener caracteres inusuales / expresiones regulares. La comparación no debe incluir expresiones regulares y no distingue entre mayúsculas y minúsculas.
Por ejemplo:
lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']
Actualmente aplico la máscara de esta manera:
mask = np.logical_or.reduce([df[col].str.,contains(i, regex=False, case=False) for i in lst])
df = df[mask]
Mi marco de datos es grande (~ 1 millón de filas) ylst
tiene una longitud de 100. ¿Hay una manera más eficiente? Por ejemplo, si el primer elemento enlst
se encuentra, no deberíamos tener que probar ninguna cadena posterior para esa fila.