У меня есть следующее, чтобы вычислить возможные комбинации взвешивания:
from itertools import product
for i in product(range(40,105,5), repeat=2):
#print(i)
Я хотел бы затем использовать эти комбинации в качестве значений для моих пороговых значений ниже, и чтобы функция выдала мне другой столбец Name_Clean для каждая итерация и ссылка, какая это была комбинация:
ngram_thresh = 65
leven_thresh = 95
def f(x):
if x['Name_ngram'] == x['Name_fuzz'] : return x['Name_ngram']
elif x['Score_ngram'] >= ngram_thresh : return x['Name_ngram']
elif x['Score_leven'] >= leven_thresh : return x['Name_Leven']
else: return 0
df['Name_Clean_65_95'] = df.apply(f, axis=1)
прогон через этот df:
data = {'Name_Raw':['AECOM TECHNICAL SERVICES', 'AECOM_*', 'AECOM- Amentum', 'AECOM GOVERNMENT SERVICES (Inactive)', 'ADT LLC dba ADT Security Services', 'ADT', 'AAA Call Center', 'AAA of Northern California, Nevada', 'ANHEUSER BUSCH InBev'], 'Name_CleanCorrect':['AECOM', 'AECOM', 'AECOM', 'AECOM', 'ADT SECURITY CORPORATION', 'ADT SECURITY CORPORATION', 'AAA', 'AAA', 'AB InBev'], 'Name_ngram':['AECOM', 'AECOM', 'AECOM', 'AECOM', 'ADT SECURITY CORPORATION', 'ADT SECURITY CORPORATION', 'AAA', 'State Bar of California', 'Ivanhoe Cambridge USA'], 'Score_ngram':[0.38, 1, 0.51, 0.33, 0.64, 0.41, 0.36, 0.30, 0.16], 'Name_Leven':['AECOM', 'AECOM', 'AECOM', 'AECOM', 'ADT SECURITY CORPORATION', 'ADT SECURITY CORPORATION', 'AAA', 'State Bar of California', 'AB InBev'], 'Score_leven':[0.23, 1, 1, 0.21, 0.65, 0.85, 0.85, 0.37, 0.65], 'ngram_correct':[1, 1, 1, 1, 1, 1, 1, 0, 0], 'leven_correct':[1, 1, 1, 1, 1, 1, 1, 0, 1]}
df = pd.DataFrame(data)
Возможно ли это?