Вывод ячейки с наибольшим количеством совпадений со списком

Имею фрейм данных:

d = {'name': ['mike, rick, morty', 'tot, piter, carl', 'brick, nick', 'rick, reaven, bart, homer', None], 'Date': ['11/05/2011', '9/02/2010', '1/01/2014', '12/20/2020', '9/30/2009'], 'Address': ['AR', 'YU', 'RU', 'EU', 'BY']}
df = pd.DataFrame(data = d)

Также список:

['carl', 'nick', 'morty', 'homer', 'rick', 'bart', 'mike']

Нужно значение фрейма с наибольшим количеством совпадений значений со списком (последовательность не важна), а также количество повторений данного совпадения, а именно:

'mike, rick, morty'
1

Ответы (1 шт):

Автор решения: SergFSM

из предложенного в комментариях у меня получилось это:

d = {'name': ['mike, rick, morty', 'tot, piter, carl', 'brick, nick', 'rick, reaven, bart, homer', None], 
     'Date': ['11/05/2011', '9/02/2010', '1/01/2014', '12/20/2020', '9/30/2009'], 
     'Address': ['AR', 'YU', 'RU', 'EU', 'BY']}
pan = ['carl', 'nick', 'morty', 'homer', 'rick', 'bart', 'mike']

df = pd.DataFrame(d)
df['max_in'] = df['name'].apply(lambda x: x.split(', ') if x else ['']).explode().isin(pan).sum(level=0)
df[df.max_in==df.max_in.max()]

вывод:

    name                        Date        Address max_in
0   mike, rick, morty           11/05/2011  AR      3
3   rick, reaven, bart, homer   12/20/2020  EU      3
→ Ссылка