Я получаю следующую ошибку: TypeError: объект "NoneType" не может быть подписан
В этом методе я пытаюсь выполнить сопоставление строк в двух файлах (тестовом и главном). Главный файл содержит правильно написанные названия продуктов, в то время как тестовый файл содержит версии этих продуктов с ошибками или просто иначе написанные. Я пытаюсь сопоставить их с функцией extractBests, чтобы включить отсечку по определенному баллу. Также, если я печатаю более ранние этапы вывода, например переменную fhp_new, она все еще работает.
Я думаю, что ошибка как-то вызвана тем фактом, что некоторые строки не дают совпадений, которые находятся в пределах лимита score_cutoff, потому что я не получаю ошибку, когда устанавливаю ограничение, скажем, 20. Так что теоретически эти строки должны просто оставаться пустым, но я думаю, это вызывает ошибку.
Эта строка кода вызывает ошибку:
for x in range (1, num_match + 1):
d["Match{0}".format(x)] = [y[0] for y in aggregated_matches["Match" + str(x)]]
Это полный код до появления строки ошибки.
def StringMatch (master, testfile, num_match=3, score_cutoff=95, limit=3):
master_names = master.iloc[:,3]
test_names = testfile.iloc[:,0]
fhp_new = [process.extractBests(x, master_names, score_cutoff=score_cutoff,limit=limit) for x in test_names]
lab=" "
i=1
while i<=num_match:
lab = lab + " " + "Match" + str(i)
i = i+1
aggregated_matches = pd.DataFrame(fhp_new, columns = lab.split())
d={}
for x in range (1, num_match + 1):
d["Match{0}".format(x)] = [y[0] for y in aggregated_matches["Match" + str(x)]]
print(d)
y
равенNone
, поэтому, вероятно, это не то, что вы думаете. Внутри цикла for попробуйте вывести агрегированное совпадение:for y in aggregated_matches["Match" + str(x)]: print(y)
. Посмотрите, почему этоNone
. - person Bram Vanroy   schedule 15.05.2018