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)

2回目の更新では、計算を関数に抽出し、リスト内包表記でプロセスを実行できます

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 に答える