У меня есть фрейм данных, в котором мне нужно найти все возможные строки совпадений, которые соответствуют terms
. Мой код
texts = ['foo abc', 'foobar xyz', 'xyz baz32', 'baz 45','fooz','bazzar','foo baz']
terms = ['foo','baz','foo baz']
# create df
df = pd.DataFrame({'Match_text': texts})
#cretae pattern
pat = r'\b(?:{})\b'.format('|'.join(terms))
# use str.contains to find matchs
df = df[df['Match_text'].str.contains(pat)]
#create pattern
p = re.compile(pat)
#search for pattern in the column
results = [p.findall(text) for text in df.Match_text.tolist()]
df['results'] = results
Вывод
Match_text results
0 foo abc [foo]
3 baz 45 [baz]
6 foo baz [foo, baz]
, в котором foo baz
также соответствует строке 6 наряду с foo
и baz
. Мне нужно получить строки для всех совпадений, которые находятся в terms