pandas.Series.str.findall
Я бы нашел все упоминания в своей группе часов и взял бы первое.
df.text.str.findall('|'.join(watch)).str[0]
0 @AmericanAir
1 @JetBlue
2 @SouthwestAir
3 @united
4 @USAirways
5 @VirginAmerica
Name: text, dtype: object
Добавить его в новый столбец через assign
df.assign(mentions=df.text.str.findall('|'.join(watch)).str[0])
text mentions
0 @AmericanAir @JetBlue @AmericanAir
1 @JetBlue @JetBlue
2 @SouthwestAir @SouthwestAir
3 @united @SouthwestAir @united
4 @USAirways @USAirways
5 @VirginAmerica @VirginAmerica
Вы можете оставить все упоминания, если хотите
df.assign(mentions=df.text.str.findall('|'.join(watch)))
text mentions
0 @AmericanAir @JetBlue [@AmericanAir, @JetBlue]
1 @JetBlue [@JetBlue]
2 @SouthwestAir [@SouthwestAir]
3 @united @SouthwestAir [@united, @SouthwestAir]
4 @USAirways [@USAirways]
5 @VirginAmerica [@VirginAmerica]
Настройка
watch = [
'@SouthwestAir',
'@VirginAmerica',
'@united',
'@JetBlue',
'@USAirways',
'@AmericanAir'
]
text = """\
@AmericanAir @JetBlue
@JetBlue
@SouthwestAir
@united @SouthwestAir
@USAirways
@VirginAmerica
"""
df = pd.DataFrame(dict(text=text.splitlines()))
df
text
0 @AmericanAir @JetBlue
1 @JetBlue
2 @SouthwestAir
3 @united @SouthwestAir
4 @USAirways
5 @VirginAmerica