Найти сходство между строковым вводом и строковым столбцом фрейма данных

У меня есть фрейм данных Pandas с двумя столбцами, содержащими строки, как показано ниже:

Col-1                 Col-2
Animal                have an apple
Fruit                 tiger safari
Veg                   Vegetable Market
Flower                Garden

Из этого я должен создать функцию, которая принимает строку в качестве аргумента.

Затем эта функция проверяет fuzziwuzzy Сходство между входной строкой и элементами Col-2 и выводит элементы Col-1 а также Col-2 соответствующий наибольшему вычисленному подобию.

Например, предположим, что входная строка Gardening Hobbyвот оно будет проверять сходство со всеми элементами df['Col-2'], Функция находит это таким образом, что Garden как высшее сходство с Gardening Hobby с результатом 90. Тогда ожидаемый результат:

I/P               O/P
Gardening Hobby   Garden(60),Flower

1 ответ

Попробуйте следующий подход, используя fuzzywuzzy библиотека - учебник

from fuzzywuzzy import process

search_str = 'Gardening Hobby'
# extract the best match of search_str in df['Col-2']
best_match = process.extractOne(search_str, df['Col-2'])
print(best_match)  # output: ('Garden', 90, 3)  (match,score,index)

# get results for 'Col-1' using the index
res = df.iloc[best_match[2]]['Col-1']
print(res)  # output: 'Flower'

# construct the output string as you wish
'%s(%d), %s' % (best_match[0], best_match[1], res)

# output: 'Garden(90), Flower'
Другие вопросы по тегам