У меня есть следующий фрейм данных:
df = pd.DataFrame(
{'id': [1, 2, 3, 4, 5, 6],
'fruits': ['apple', 'apples', 'orange', 'apple tree', 'oranges', 'mango']
})
id fruits
0 1 apple
1 2 apples
2 3 orange
3 4 apple tree
4 5 oranges
5 6 mango
Я надеюсь найти нечеткие строки в столбце fruits
и получить новый фрейм данных следующим образом, значение ratio_score которого больше 80.
Как это можно сделать в Python, используя пакеты fuzzywuzzy?Благодарю.Обратите внимание: ratio_score
- это серия значений, составленная в качестве примера.
Мое решение:
df.loc[:,'fruits_copy'] = df['fruits']
df['ratio_score'] = df[['fruits', 'fruits_copy']].apply(lambda row: fuzz.ratio(row['fruits'], row['fruits_copy']), axis=1)
Ожидаемый результат:
id fruits matched_id matched_fruits ratio_score
0 1 apple 2 apples 95
1 1 apple 4 apple tree 85
2 2 apples 4 apple tree 80
3 3 orange 5 oranges 95
4 6 mango
Ссылка связана:
Нечеткое сопоставление отсортированного столбца с самим собой с использованием python
Применение нечеткого сопоставления для столбца данных и сохранение результатов в новом столбце
Как нечетко сопоставить элементы в столбце массива в python?
Использование fuzzywuzzy для создания столбца сопоставленных результатов во фрейме данных