параметры фрейма данных: почему изменения в моем df являются локальными?

#python #pandas

#python #панды

Вопрос:

У меня есть функция, которая должна реализовывать некоторые преобразования и вычисления в df, код выполняется, но после его выполнения df остается таким же, как и раньше.

РЕДАКТИРОВАТЬ: проблема решается, когда я удаляю строку 2 (pd.merge), но я хотел бы понять, почему.

 def Tilt_contribution(ptf, data_factors, data_universe, Sample_size_adjustment:bool):
    ptf['ActiveWeight'] = ptf['PortfolioWeight']- ptf['BenchmarkWeight']
    ptf = pd.merge(ptf, data_factors, on = ['ISIN','SecurityName'], how = 'left' )
    sample_size_adj = 1 #initialisation
    if Sample_size_adjustment == True:
        sample_size_adj = Sample_size_adj(ptf)
    for column in factor_list:
        #Weighted std
        universe_wght_std = Universe_weighted_std(data_universe, column)
        #Benchmark weighted average
        benchmk_wght_avg = Benchmark_weighted_avg(ptf, column)
        #Tilt Contrib   
        col_index = ptf.columns.get_loc(column)
        ptf.insert(col_index 1, column   ' Tilt Contribution', 0)    
        for idx in ptf.index:
            tilt_cont = (ptf.at[idx, column] - benchmk_wght_avg)*ptf.at[idx, 'ActiveWeight']/(sample_size_adj * universe_wght_std)
            if math.isnan(tilt_cont):
                tilt_cont=0
            ptf.at[idx, column   ' Tilt Contribution'] = tilt_cont
    global Tilt
    Tilt = ptf.sum()
 

Ответ №1:

Вы устанавливаете глобальную переменную Tilt с суммой, ptf но не возвращаете измененный ptf фрейм данных.

Комментарии:

1. Но почему в других функциях изменения, применяемые к df, являются глобальными без необходимости их возврата