Использование numpy
:
searchfor=[wrd.lower() for wrd in searchfor]
searchfor=set(searchfor)
df["found"]=np.bitwise_and(df["review_trimmed"].str.lower().str.split("[^\w+]").map(set), searchfor)
Чтобы показать вывод, я использовал фиктивные данные:
import pandas as pd
import numpy as np
df=pd.DataFrame({"review_trimmed": ["dog and cat", "Cat chases mouse", "horrible thing", "noodle soup", "chilli", "pizza is Good"]})
searchfor="yes cat Dog soup good bad horrible".split(" ")
searchfor=[wrd.lower() for wrd in searchfor]
searchfor=set(searchfor)
df["found"]=np.bitwise_and(df["review_trimmed"].str.lower().str.split("[^\w+]").map(set), searchfor)
print(searchfor)
print(df)
Выходы:
#searchfor:
{'cat', 'good', 'yes', 'dog', 'bad', 'horrible', 'soup'}
#df:
review_trimmed found
0 dog and cat {cat, dog}
1 Cat chases mouse {cat}
2 horrible thing {horrible}
3 noodle soup {soup}
4 chilli {}
5 pizza is Good {good}
Редактировать
IIU C - просто добавьте .str.join(";")
searchfor=[wrd.lower() for wrd in searchfor]
searchfor=set(searchfor)
df["found"]=np.bitwise_and(df["review_trimmed"].str.lower().str.split("[^\w+]").map(set), searchfor).str.join(";")
print(searchfor)
print(df)
Выходы:
{'dog', 'soup', 'cat', 'bad', 'good', 'yes', 'horrible'}
review_trimmed found
0 dog and cat dog;cat
1 Cat chases mouse cat
2 horrible thing horrible
3 noodle soup soup
4 chilli
5 pizza is Good good