您好,我想做等同于excel函数sum(offset)的方法,以抵消“年”的总和。所以我有十列年1到年10。但是如果maturity_years2,我只想对两列求和。因此第一行只会添加前两列100 + 100。然后第二行maturity_years = 4,因此仅将ECL_y1加到_ ECL_yr4,即244 +244 +244 +244..等。

到目前为止,我有

df_base_ifrs['ECL_LT']=df.iloc[:,1:10].shift(df['maturity_years']).sum(axis=1)


但不起作用

df = pd.DataFrame({'maturity_years': [2, 4, 0, 8],
               'ECL_y1': [100, 244, 443, 124],
               'ECL_y2': [100, 244, 443, 124],
               'ECL_y3': [100, 244, 443, 124],
               'ECL_y4': [100, 244, 443, 124],
               'ECL_y5': [100, 244, 443, 124],
               'ECL_y6': [100, 244, 443, 124],
               'ECL_y7': [100, 244, 443, 124],
               'ECL_y8': [100, 244, 443, 124],
               'ECL_y9': [100, 244, 443, 124],
               'ECL_y10': [100, 244, 443, 124],})

最佳答案

嘿,只是为了更新大家,我终于想通了。尽管发出警告

试图在DataFrame的切片副本上设置一个值。
尝试改用.loc [row_indexer,col_indexer] = value

但是,如果您可以提高时间效率,请提出答案

for i in range(0, len(df_base)):
    row = df_base.iloc[[i]]
    mat_date = row['MATURITY_YEARS_D'].values[0]
    result = row.iloc[:,68:68+mat_date].sum(axis=1)
    result_as_float = result.values[0]
    row['ECL_LT'] = result_as_float
    print(result_as_float)

07-28 08:58