执行python脚本时的奇怪行为

时间:2012-09-14 22:31:56

标签: python dataframe pandas

我不知道你们中是否有过这样的行为,但在调试我的代码后,我注意到我的代码发生了一件非常奇怪的事情。 基本上,我正在填充一个numpy数组('vols'),其中包含在某个索引('date')的pandas数据框(包含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])

我无法正确填充变量'vols'的所有值以及索引'date'中数据框中包含的那些值,而是将某些'nan'填入我希望的值。 有趣的是,如果我在解释器中执行这段代码,这是正确的方式(即在Spyder的编辑器上按f9,这是我正在使用的IDE)!我通过重复这些行两次找到了这个bug的解决方法(即,强制脚本执行两次行)。 我的解决方案是这样的:

   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])

这真是不可接受。 有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

如果import pdb; pdb.set_trace()是NaN并调试那么,为什么不在分配到vols之后插入硬断点(vols[i,j])?