我不知道你们中是否有人有过这样的行为,但在调试我的代码之后,我注意到我的代码发生了一件非常奇怪的事情。 基本上,我是在某个索引(“date”)处用数据帧(有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])
我不能用索引'date'处的数据帧中包含的值正确地填充变量'vols'的所有值,而是在期望值的地方得到一些'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])
这实在令人无法接受。 有人知道为什么会这样吗?你知道吗
如果
vols[i,j]
是NaN,那么为什么不尝试在vols
的赋值之后插入一个硬断点(import pdb; pdb.set_trace()
),并以这种方式进行调试呢?你知道吗相关问题 更多 >
编程相关推荐