Почему fuzzy.ratio не 100 для одинаковых строк?
У меня есть два кадра данных df1 и df2. Оба фрейма данных имеют столбец с именем фильма. Я пытаюсь сопоставить movie_name1 в df1 с movie_name2 в df2. Аргумент movie_name1 имеет такие значения, как Восстание Темного Рыцаря, Человек-Паук 3. movie_name2 имеет такие значения, как The Dark Knight Rises, Spider-Man 3.
Мы видим, что во всех фильмах в movie_name1 есть дополнительная буква в конце. Поэтому перед сопоставлением я удаляю лишнюю букву, убираю пробел и затем вычисляю fuzz.ratio.
Вот как я выполняю операцию -
import pandas as pd
from fuzzywuzzy import fuzz
df1['movie_name1'] = df1['movie_name1'].str.replace( 'Â',"")
df1['movie_name1'] = df1['movie_name1'].apply(lambda x: x.strip())
df1['movie_name1_first_letter'] = df1['movie_name1'].astype(str).str.slice(0,1)
df2['movie_name2_first_letter'] = df2['movie_name2'].astype(str).str.slice(0,1)
df_result = pd.merge(df1,mdf2, left_on='movie_name1_first_letter',right_on=
'movie_name2_first_letter')
df_result['Fuzz'] = df_result.apply(lambda x: fuzz.ratio(x['movie_name1'],
x['movie_name2']) , axis=1)
Пример данных:
df1 = pd.DataFrame({'movie_name1': ['127 hoursÂ','The Dark Knight RisesÂ',
'SpiderManÂ']})
df2 = pd.DataFrame({'movie_name2': ['The Dark Knight Rises','SpiderMan','127 hours'
]})
Образец результата:
movie_name1 movie_name2 Fuzz
127 hours 127 hours 90
Даже когда я выполняю вышеуказанные операции до вычисления fuzz.ratio, значение fuzz.ratio для точно таких же строк не равно 100.
Мой анализ показывает, что всегда есть разница в длине 2 между двумя названиями фильмов. Например: продолжительность "127 часов" в movie_name1 равна 11, тогда как продолжительность того же фильма в movie_name2 равна 9. Это происходит для всех фильмов.
Почему это так? Это из-за этой буквы? Что я могу сделать, чтобы избавиться от этой проблемы?