次のデータフレームがあるとします df
1 3
Scenario1 0.001 0.05
Scenario2 0.003 0.01
Scenario3 0.001 0.042
Scenario4 0.09 0.006
Scenario5 0.02 0.04
これらが金利と期間であり、年金を計算したいとします。
あなたがそれに精通していない場合は、この式を適用したいと思います。
def computeAnnuity(r,n):
return (1-(1+r)**-n)/r
各要素について、以前に関数の値を計算したデータフレームを取得するにはどうすればよいですか?
みたいなことをしたい
df.applymap(computeAnnuity)
与えr
リターン(DFの各要素)としてn
(1及び3である)データフレームの列名前。しかし、ループや循環を行わずに効率的な方法でそれを行う方法がわかりません。
言い換えれば、私が欲しい0.001があるシナリオ1の期間1、(1-(1+0.001)**-1)/0.001
または例えば、私が欲しい0.006があるシナリオ4の期間3の実用的な例を提供します(1-(1+0.006)**-3)/0.006
. データフレーム内のすべての要素に対して実行したいと思います (効率的かつ自動的な方法: 関数を使用)。
私はあなたが必要だと思いますapply
:
def computeAnnuity(r,n):
return (1-(1+r)**-n)/r
df1 = df.apply(lambda x: computeAnnuity(x, x.name))
print (df1)
1 3
Scenario1 0.999001 2.723248
Scenario2 0.997009 2.940985
Scenario3 0.999001 2.764591
Scenario4 0.917431 2.964357
Scenario5 0.980392 2.775091
print ((1-(1+0.001)**-1)/0.001)
0.9990009990008542
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加