IIUC, you want the values to display the index of the item in the list searchforthat matches your word. You can start by changing your object searchfor-
m = {'^.*{}.*$'.format(s) : str(i) for i, s in enumerate(searchfor)}
<pattern : index> . pd.Series.replace regex=True -
s = s.replace(m, regex=True)
s[:] = np.where(s.str.isdigit(), pd.to_numeric(s, errors='coerce'), -1)
s
0 1
1 1
2 0
3 0
4 -1
dtype: int64
, str.extract + groupby + apply -
p = '(^.*({}).*$)'.format('|'.join(searchfor))
s.str.extract(p, expand=True)\
.groupby([1])[0]\
.apply(list)
1
at [cat, hat]
og [dog, fog]
Name: 0, dtype: object