您好,我想做等同于excel函数sum(offset)
的方法,以抵消“年”的总和。所以我有十列年1
到年10
。但是如果maturity_years
是2
,我只想对两列求和。因此第一行只会添加前两列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)