Вывод ячейки с наибольшим количеством совпадений со списком
Имею фрейм данных:
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