私は数年の間、毎日のための米国財務省の曲線を含むデータセットを持っています。行=日付、列=特定財務省債(3月、1年、10年など)のテナントパンダのiterrowsとループカウンターのトラブル
私は毎日ループし、金利モデルのパラメータを較正するPythonコードを持っています。私はiterrowsと私のループカウンタで各行をループするのに問題があります。目標は行ごとに移動し、その日の曲線にモデルをキャリブレーションし、キャリブレーションされたパラメータをデータフレームに格納し、次の行に移動して繰り返します。
def do_calibration_model1():
global i
for index, row in curves.iterrows():
day = np.array(row) #the subsequent error_fxn uses this daily curve
calibration()
i += 1
def calibration():
i = 0
param = scipy.brute(error_fxn, bounds...., etc.)
opt = scipy.fmin(error_fxn, param, xtol..., ftol...)
calibration.loc[i] = np.array(opt) # store result of minimization (parameters for that day)
コードは最初の繰り返しで正しく機能しますが、データフレーム(カーブ)の最初の行の較正を繰り返し続けます。さらに、較正データフレームの次の行にパラメータを格納しません。私は最初の問題をiterrowsに関連して見ていますが、2番目の問題はループカウンタの問題です。
何が問題になるのでしょうか?私はMatlabの背景を持っていて、非常にイライラするようにパンダのセットアップを見つける。
参考までに私は以下のリンクを参照してください。改訂されたコードは、今に基づいてキャリブレーションデータフレームの各行の適切なパラメータを置く
def do_calibration_model1():
global i
for index, row in curves.iterrows():
for i in range(0,len(curves)):
day = np.array(row) #the subsequent error_fxn uses this daily curve
param = scipy.brute(error_fxn, bounds...., etc.)
opt = scipy.fmin(error_fxn, param, xtol..., ftol...)
calibration.loc[i] = np.array(opt) # store result of minimization (parameters for that day)
i += 1
:私は、コードを更新した下記のジェイソンさんのコメントパー
https://www.python.org/dev/peps/pep-0212/
http://nipunbatra.github.io/2015/06/pandas-iteration/
ループカウンタ。
*ただし、パンダのiterrows関数のカーブデータフレームの2番目(または後続の行)にはまだ移動しません。
私はあなたの質問のiterrows部分に対処するために私の答えを編集しました。これが役に立ったら教えてください。 – user6275647