Мне нужно фильтровать строки в pandas
dataframe, чтобы определенный столбец строки содержал хотя бы один из списка предоставленных подстрок. Подстроки могут иметь необычные/регулярные символы. Сравнение не должно включать регулярное выражение и нечувствительно к регистру.
Например:
lst = ['kdSj;af-!?', 'aBC+dsfa?\-', 'sdKaJg|dksaf-*']
В настоящее время я применяю маску следующим образом:
mask = np.logical_or.reduce([df[col].str.contains(i, regex=False, case=False) for i in lst])
df = df[mask]
Мой dataframe большой (~ 1mio rows) и lst
имеет длину 100. Есть ли более эффективный способ? Например, если первый элемент в lst
найден, нам не нужно проверять любые последующие строки для этой строки.