Я сравниваю два столбца данных в Python, чтобы найти для каждого элемента первого столбца наилучшее совпадение со вторым. Первый столбец содержит 19 000 строк, и мне нужно проверить для каждой строки, что является лучшим соответствием второго столбца. Таким образом, необходимо проверить 19 000 строк по 19 000 раз для каждой строки, принимая во внимание, что сама строка должна быть другой, а не той.
Я начал с простого сравнения, нашел строку в списке и добился успеха. Затем я применил его к списку, просто чтобы сравнить их оба, но, очевидно, выдает ошибку «TypeError: ожидаемая строка или байтовоподобный объект» из-за сравнения строки со списком. Наконец, я попытался создать цикл, но ошибка та же. Есть ли способ создать список с ожидаемыми результатами? Может быть, есть лучший способ сделать это с другой библиотекой, но пока я ничего не нашел. Вот код на данный момент:
#simple example
from fuzzywuzzy import process
string = "appl"
compare = ["adfad.","apple","asple","tab"]
Ratios = process.extract(string,compare)
print(Ratios)
[('apple', 89), ('asple', 67), ('tab', 29), ('adfad.', 22)]
highest = process.extractOne(string,compare)
print(highest)
('apple', 89)
#data frame
from fuzzywuzzy import process
dataframecolumn = ["appl","tb"]
compare = ["adfad.","apple","asple","tab"]
Ratios = process.extract(dataframecolumn,compare)
TypeError: expected string or bytes-like object
#expected (but I need a list)
highest = process.extractOne(dataframecolumn[0],compare)
print(highest)
('apple', 89)
highest = process.extractOne(dataframecolumn[1],compare)
print(highest)
('tab', 80)
#Result expected
results = ["apple, 89","tab, 80"]
#Error
myl = ["appl","tb"]
compare = ["adfad.","apple","asple","tab"]
results = []
for x in myl:
results.append(process.extractOne(myl,compare)[1])
TypeError: expected string or bytes-like object