Найти сходство между строковым вводом и строковым столбцом фрейма данных
У меня есть фрейм данных 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'