Фильтровать строки данных, содержащие набор строк в Python - PullRequest
0 голосов
/ 09 июня 2018

У меня есть фрейм данных df like -

A      B
12     A cat
24     The dog
54     An elephant

Мне нужно отфильтровать строки на основе значений в столбце B, содержащем список строк.Я могу сделать это для строки «кошка» следующим образом:

df[df["B"].str.contains("cat", case=False, na=False)]

Это вернет меня

A      B
12     A cat

Но теперь я хочу отфильтровать его для списка строк, т. Е. ['cat ',' dog ', .....].

A      B
12     A cat
24     The dog

Я могу сделать это, используя цикл for, но ищу способ сделать это для панд.Я использую python3 и pandas и за последние 2 дня искал множество решений по переполнению стека

1 Ответ

0 голосов
/ 09 июня 2018

Используйте join с | для регулярных выражений OR с \b для границы слова:

L = ['cat', 'dog']
pat = r'(\b{}\b)'.format('|'.join(L))
df[df["B"].str.contains(pat, case=False, na=False)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...