0

このような動作をしたことがある人がいるかどうかはわかりませんが、コードをデバッグした後、コードに非常に奇妙なことが起こっていることに気付きました。基本的に、特定のインデックス (「date」) で pandas データフレーム (2 つの階層列) に含まれる値を numpy 配列 (「vols」) に入力していますが、スクリプトでこのコードを実行しようとすると:

   for i in range(capEndDates_size):
      for j in range(strike_size):         
       vols[i,j] = float(df[capEndDates[i]][strikes_list[j]].ix[date])

変数「vols」のすべての値を、インデックス「date」のデータフレームに含まれる値で適切に埋めることができず、代わりに値が期待される「nan」を取得します。おもしろいことに、インタープリターでコードを実行すると、これは正しい方法で実行されます (つまり、私が使用している IDE である Spyder のエディターで f9 を押すことによって)! これらの行を 2 回繰り返す (つまり、スクリプトに行を 2 回実行させる) ことで、このバグの回避策を見つけました。私の解決策は次のとおりです。

   for i in range(capEndDates_size):
      for j in range(strike_size):         
       vols[i,j] = float(df[capEndDates[i]][strikes_list[j]].ix[date])

   for i in range(capEndDates_size):
      for j in range(strike_size):         
       vols[i,j] = float(df[capEndDates[i]][strikes_list[j]].ix[date])

これは本当に受け入れられません。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

if is NaNimport pdb; pdb.set_trace()への割り当ての後にハードブレークポイント ( ) を挿入して、そのようにデバッグしてみてはどうでしょうか?volsvols[i,j]

于 2012-09-18T14:02:13.387 に答える