Да. Эта строка не создает новую переменную:
"cf_" + str(ind) = cf
Строки неизменны. Вы также не можете «назначить фрейм данных для строки», я даже не уверен, чего это пытается достичь. Также рекомендуется избегать global
переменных.
Просто верните свой фрейм данных и присвойте явное имя переменной. Если вы настроены на изменение имени переменной, используйте словарь и dict.pop
:
def model(ind, dep):
# ...
cf = pd.DataFrame(confusion_matrix(y_train, y_pred))
cf.index = models
cf.columns = models
# ...
return cf
dfs = {}
dfs['ind'] = model(X_tv, y_combo) # identify dataframe with key 'ind'
dfs['cf_ind'] = dfs.pop('ind') # rename identifier to 'cf_ind'