0

我不知道你们中是否有人有过这样的行为,但是在调试我的代码之后,我注意到我的代码发生了一件非常奇怪的事情。基本上,我在某个索引(“日期”)处使用 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”的所有值,而是在我期望值的地方得到一些“nan”。有趣的是,如果我在解释器中执行这段代码,这是正确的(即在我正在使用的 IDE 的 Spyder 编辑器上按 f9)!我通过重复这些行两次(即强制脚本执行两次)找到了这个错误的解决方法。我的解决方案是这样的:

   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

import pdb; pdb.set_trace()为什么不尝试在分配给volsif是 NaN 之后插入一个硬断点 ( )vols[i,j]并以这种方式进行调试?

于 2012-09-18T14:02:13.387 回答