Используйте метод apply
для передачи пользовательской функции:
substring = ['AmericanAir', 'JetBlue', 'SouthwestAir', 'united','USAirways', 'VirginAmerica']
df= pd.DataFrame([["AmericaAir5","JetBlue2"],["JetBlue2","SouthwestAir"]],columns=['text','what'])
def searchr(x,s):
for i in s:
if x.find(i)+1:
return i
else:
continue
df["mentions"]=df['text'].apply(searchr,args=(substring,))
В качестве альтернативы, вы можете использовать регулярное выражение:
import re
r = re.compile('('+"|".join(substring)+')')
df["m"] = df.text.str.extract(r)
Первый метод кажется быстрее, чем регулярное выражение str concat