我有以下DataFrame
Qtr Premium Claim Rate
Type Code
A 3 14 3552.77 100991.7 0.004017
3 15 5610.67 105763.6 0.004017
3 16 6463.22 107740.6 0.004017
4 17 6129.91 106967.7 0.005638
4 18 4688.65 103625.6 0.005638
4 19 2158.94 97759.66 0.005638
4 20 8540.77 89369.72 0.005638
我有恒定的“c”
我希望逐行计算,使用Qtr和Rate中的相关值,但更新Premium和Claim的值。
示例:
Premium = Premium / (1+Rate)^(c-Qtr)
Claim = Claim / (1+Rate)^(c-Qtr)
实际上我有很多专栏,我希望进行这种计算。
答案 0 :(得分:0)
如果df是您的数据框的名称而c是您的常量,请尝试:
df['Premium'] = df.Premium / ( 1 + df.Rate ) ** (c - df.Qtr)
df['Claim'] = df.Claim / ( 1 + df.Rate ) ** ( c - df.Qtr )
更新评论,我相信有更多的pythonic方法可以做到这一点,但这有效:
columns = df.columns
subset_cols = columns.drop(['Rate','Qtr'])
for col in subset_cols:
df[col] = df[col] / ( 1 + df.Rate ) ** (c- df.Qtr)
第二次更新,您可以将计算提取到一个函数中,并在列表推导中执行该过程
def calc(df, col, c):
df[col] = df[col] / ( 1 + df.Rate ) ** ( c - df.Qtr )
[calc(df, col, c) for col in df.columns.drop(['Rate','Qtr'])]