我不知道你们中是否有过这样的行为,但在调试我的代码后,我注意到我的代码发生了一件非常奇怪的事情。 基本上,我正在填充一个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])
这真是不可接受。 有没有人知道为什么会这样?
答案 0 :(得分:0)
如果import pdb; pdb.set_trace()
是NaN并调试那么,为什么不在分配到vols
之后插入硬断点(vols[i,j]
)?