简单Python操作无法提供一致的输出

简单Python操作无法提供一致的输出,python,pandas,panel,anaconda,pandas-datareader,Python,Pandas,Panel,Anaconda,Pandas Datareader,我不明白为什么下面的主代码从一个相对简单的python数据帧操作中给出了不一致的输出。主代码中似乎有故障的部分如下所示: dfResult = dfPrices/dfPrices.shift(1) “dfPrices”和“dfResult”都是数据帧 主代码首先检索价格数据并以pandas面板类型的形式存储它。然后使用相同的固定/不变数据,我循环了1000次,做了简单的数据帧分割操作,应该会得到相同的结果。每当有不一致的输出时,它就会打印出不一致的值。从1000个循环中,我通常得到5-20个不

我不明白为什么下面的主代码从一个相对简单的python数据帧操作中给出了不一致的输出。主代码中似乎有故障的部分如下所示:

dfResult = dfPrices/dfPrices.shift(1)
“dfPrices”和“dfResult”都是数据帧

主代码首先检索价格数据并以pandas面板类型的形式存储它。然后使用相同的固定/不变数据,我循环了1000次,做了简单的数据帧分割操作,应该会得到相同的结果。每当有不一致的输出时,它就会打印出不一致的值。从1000个循环中,我通常得到5-20个不一致的输出。大多数被认为不一致的输出值为0.0,但有时也可能是非零数。因此,平均错误率约为1%,但如果我使用更复杂的操作,并且如果下载的数据量增加,错误率可能会达到10%。pandas模块中可能有bug,还是我的代码

import pandas as pd
import pandas_datareader.data as web

startDate = pd.datetime(2007,7,1)
endDate = pd.datetime(2014,7,1)

stockList = ['RWX','VNQ','IJJ','IVW','VWO','IVE','TLT','GLD','SHY']

data = web.DataReader(stockList, 'yahoo', startDate,endDate)
#The for loop below is not necessary, it's just filling out some NaN values
for i in data.items:
    data.loc[i,:,:].fillna(method='ffill', inplace=True)

dfPrices = data['Adj Close']
dfResult = dfPrices/dfPrices.shift(1)
reference = dfResult.loc[:,'GLD'][-1]
print 'Reference: '+str(reference)

for i in xrange(1000):
    dfResult = dfPrices/dfPrices.shift(1)
    actualResult = dfResult.loc[:,'GLD'][-1]
    if actualResult != reference:
        print actualResult
仅供参考,我正在使用Windows 10和Anaconda分发版。我有熊猫版本0.17.0和熊猫数据阅读器版本0.2.0


如果您对此有任何建议,我们将不胜感激。谢谢。

@Jeff回答了我的问题,作为上面的评论。通过将numexpr从2.4.4更新到2.4.6版,问题就不存在了。

请确保您的numexpr=2.4.6,2.4.4是正确的buggy@Jeff布尔西!非常感谢你。我更新了numexpr,错误率下降到0%:))Anaconda没有合并此更新,因此不能简单地使用“conda update--all”来更新numexpr。