Я не могу понять, почему моя функция не предоставляет изменения переменных после того, как я выполню функцию. Или почему переменные доступны после функции. Мне предоставили фрейм данных и объяснили функцию столбца для сравнения. Я хочу, чтобы функция включала совпадающие значения исходного фрейма данных и создала отдельный фрейм данных, чтобы я мог видеть только совпадения. Когда я запускаю код, я могу увидеть кадр данных и соответствующий кадр данных после запуска функции, но когда я попытался вызвать соответствующий кадр данных после python, он не распознает переменную как define, и исходный кадр данных не изменяется, когда я смотрю на это снова. Я пытался вызвать их как глобальные переменные в начале функции, но это тоже не сработало.
def scorer_tester_function(dataframe, score_type, source, compare, limit_num):
match = []
match_index = []
similarity = []
org_index = []
match_df = pd.DataFrame()
for i in zip(source.index, source):
position = list(source.index)
print(str(position.index(i[0])) + " of " + str(len(position)))
if pd.isnull(i[1]):
org_index.append(i[0])
match.append(np.nan)
similarity.append(np.nan)
match_index.append(np.nan)
else:
ratio = process.extract( i[1], compare, limit=limit_num,
scorer=scorer_dict[score_type])
org_index.append(i[0])
match.append(ratio[0][0])
similarity.append(ratio[0][1])
match_index.append(ratio[0][2])
match_df['org_index'] = pd.Series(org_index)
match_df['match'] = pd.Series(match)
match_df['match_index'] = pd.Series(match_index)
match_df['match_score'] = pd.Series(similarity)
match_df.set_index('org_index', inplace=True)
dataframe = pd.concat([dataframe, match_df], axis=1)
return match_df, dataframe
Я вызываю список функций так:
scorer_tester_function(df_ven, 'WR', df_ven['Name 1'].sample(2), df_emp['Name 2'], 1)
Я ожидаю, что у меня будет доступ к match_df и def_ven, и я смогу просматривать и дополнительно манипулировать этими переменными, но при вызове исходного кадра данных df_ven не изменяется, а match_df возвращает переменную, не определенную как ошибку.