Я пытаюсь найти наилучший способ выровнять мой набор данных, который содержит «Названия компаний». Мой набор данных составляет около 300 тыс. Строк и 3 столбца. Я попробовал много методов, включая Fuzzywuzzy, используя
choices = ["Atlanta Falcons", "New York Jets", "New York Giants", "Dallas Cowboys"]
>>> process.extract("new york jets", choices, limit=2)
[('New York Jets', 100), ('New York Giants', 78)]
Теперь этот код имеет два набора данных, и когда я конвертирую df [Name] в два и сопоставляю с вышеуказанным методом, первый по умолчанию становится 100%, так как список дублируется.
Мой точный код
import pandas as pd
df = pd.DataFrame({"Name" : ["Google","google.inc", "ddood"]})
df2 = pd.DataFrame({"Name" : ["google","google"]})
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
get_match = []
for row in df.index:
name1 = []
name1.append(df.get_value(row,"Name"))
for columns in df2.index:
name2 = []
name2.append(df2.get_value(columns,"Name") )
matched_token=[process.extract(x, name2, limit = 2)[0][1] for x in name1]
get_match.append([matched_token, name1[0], name2[0]])
df_maneet = pd.DataFrame({'name1': [i[1] for i in get_match], 'name2':[i[2] for i in get_match], 'Ratio': [i[0][0] for i in get_match]})
new_df = df_maneet[df_maneet.Ratio>95]
Я сомневаюсь, что вышесказанное - лучший способ решить мою проблему. Мой конечный результат должен быть таким же, как у компаний, составляющих группу.
Приведенный ниже ответ также не помог
нахождения автомодельного-контакт-имена-в-таблица