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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta