如何移位/抵消iloc和?

时间:2019-03-29 10:20:29

标签: python pandas

您好,我想做等效于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],})

1 个答案:

答案 0 :(得分:0)

嘿,只是为了更新大家,我终于弄明白了。尽管会发出警告

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

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

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)