3

我有以下数据框

                           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)

实际上,我有很多列需​​要进行此计算。

4

1 回答 1

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'])]
于 2013-01-31T11:31:38.030 回答