навыки низкого уровня python здесь (обучение программированию с SAS).
Я пытаюсь применить ряд формул нечеткого совпадения строк (fuzzywuzzy lib) к парам строк, хранящимся в базовом кадре данных , Теперь я в конфликте о способе go об этом.
Должен ли я написать al oop, который создает специфицированный c кадр данных для каждой формулы, а затем добавить все эти субкадры в один? Проблема с этим подходом заключается в том, что, поскольку я не могу динамически называть субкадр, результирующее значение перезаписывается при каждом повороте l oop.
Или я должен создать один фрейм данных в одном oop, принимая названия и выражения моих формул как диктовку? Беда здесь дает мне ту же проблему, что и выше.
Вот мои формулы dict:
# ratios dict: all ratios names and functions
ratios = {"ratio": fuzz.ratio,
"partial ratio": fuzz.partial_ratio,
"token sort ratio": fuzz.token_sort_ratio,
"partial token sort ratio": fuzz.partial_token_sort_ratio,
"token set ratio": fuzz.token_set_ratio,
"partial token set ratio": fuzz.partial_token_set_ratio
}
А вот l oop, который я сейчас потею:
# for loop iterating over ratios
for r, rn in ratios.items():
# fuzzing function definition
def do_the_fuzz(row):
return rn(row[base_column], row[target_column])
# new base df containing ratio data and calculations for current loop turn
df_out1 = pd.DataFrame(data = df_out, columns = [base_column, target_column, 'mesure', 'valeur', 'drop'])
df_out1['mesure'] = r
df_out1['valeur'] = df_out.apply(do_the_fuzz, axis = 1)
Это дает мне ту же проблему, а именно то, что столбец 'mesure' перезаписывается, и я получаю столбец, полный последнего значения (здесь: 'частичный набор токенов').
Моя общая проблема заключается в том, что я не могу понять, могу ли я и как я могу динамически именовать кадры данных, столбцы или значения в python l oop (или если я даже должен это делать).
I ' Я слишком долго пытался найти решение, и я просто не могу его найти. Любое понимание будет очень ценится! Спасибо заранее!