У меня есть Pandads Dataframe, где один столбец («обработан») - это отдельная строка, содержащая некоторый предварительно обработанный текст различной длины.
Я хочу выполнить поиск по списку ключевых слов произвольной длины, чтобы вернуть только обработанные заметки для строк, в которых строка «обработано» содержит ВСЕ элементы в списке.
Конечно, я могу искать термины по отдельности, например:
words = ['searchterm1', 'searchterm2']
notes = df.loc[(df.processed.str.contains(words[0])) & (df.processed.str.contains(words[1]))].processed
Но это кажется неэффективным и потребует другого кода в зависимости от количества поисковых запросов, которые я использую.
Я ищу что-то вроде ....
notes = (df.loc[[(df.processed.str.contains(words[i])) for i in range(len(words))]]).processed
Что будет включать
"searchterm1 foo bar searchterm"
но НЕ включает
"foo bar searchterm1"
или
"searchterm2"
.
Но это не работает - loc не поддерживает объект-генератор или список в качестве входных данных.
Так каков наилучший способ найти строку, содержащую несколько подстрок? Спасибо!