Как идентифицировать строку, в которой она содержит несколько слов

Текст столбца фрейма данных со строкой типа данных содержит предложения, я хочу извлечь строки, содержащие определенные слова, независимо от места, в котором они встречаются.

Например:

Column
Cat and mouse are the born enemies
Cat is a furry pet


df = df[df['cleantext'].str.contains('cat' & 'mouse')].reset_index()
df.shape

Выше выдает ошибку.

Я знаю, что для или условия мы можем написать -

df = df[df['cleantext'].str.contains('cat | mouse')].reset_index()

Но я хочу извлечь строки, в которых присутствуют и кошка, и мышь.

Ожидаемый результат -

Column
Cat and mouse are the born enemies

person Dr.Chuck    schedule 06.05.2019    source источник
comment
Если бы вы использовали регулярное выражение, вы бы использовали (?=.*cat)(?=.*mouse)   -  person    schedule 06.05.2019
comment
Спасибо! Попробую и этот способ.   -  person Dr.Chuck    schedule 06.05.2019


Ответы (1)


Вот один подход, который также работает для нескольких слов:

words = ['cat', 'mouse']
m = pd.concat([df.Column.str.lower().str.contains(w) for w in words], axis=1).all(1)
df.loc[m,:]

      Column
0  Cat and mouse are the born enemies
person yatu    schedule 06.05.2019
comment
Спасибо, это то, что мне было нужно, это работает. - person Dr.Chuck; 06.05.2019
comment
Привет @Dr.Chuck, не забывайте, что вы можете голосовать/принимать ответы, см. Что мне делать, когда кто-то отвечает на мой вопрос? - person yatu; 06.05.2019
comment
Спасибо за информацию :) - person Dr.Chuck; 06.05.2019