Вы можете создать лямбда-функцию для проверки каждого элемента в вашем списке:
d = {'id': [1,2,3,4,5,6,7,8,9,10],
'text': ['bill did this', 'jim did something', 'phil', 'bill did nothing',
'carl was here', 'this is random', 'other name',
'other bill', 'bill and carl', 'last one']}
df = pd.DataFrame(data=d)
l = ['bill','carl']
df['contains'] = df['text'].apply(lambda x: ','.join([i for i in l if i in x]))
Вы можете удалить объединение, если хотите получить список, иначе оно просто объединит значения, разделенные запятой.
Выход
>>df['contains']
0 bill
1
2
3 bill
4 carl
5
6
7 bill
8 bill,carl
9
Name: contains, dtype: object