我有一个奇怪的情况,其中pandas(假设pandas,而不是Python)给出一个不一致的错误。我在Windows 10计算机上运行带有Pandas 0.17.1的Python 2.7.11。
基本错误是这样的:如果我有两个匹配索引的df,然后简单地执行:dfA / dfB - 1,如果重新运行多次,则此计算会返回不一致的错误。
具体做法是:
import pandas as pd
close = pd.read_csv("C:\close.csv")
shifted = pd.read_csv("C:\shifted.csv")
ret = pd.DataFrame()
ret = shifted.C / close.C - 1
foo = min(ret)
bar = max(ret)
print "Starting with Max: %.4f Min %.4f" % (foo, bar)
for i in range(1000):
ret = shifted.C / close.C - 1
foo = min(ret)
bar = max(ret)
if foo < -.17 or bar > .16:
print "Error on run %i: Max: %.4f Min %.4f" % (i, foo, bar)
我有.py和两个csv的at this link。
将csv放在C:root中(或在其他地方更改文件位置的代码)并运行代码。如果它没有错误,再次运行它可能会。甚至误差频率也不一致;有时它会在一千次迭代中出错20次以上,但通常只有1-2次。
这看起来非常基本,所以我一定做错了。这是一个更大的项目,我认为这是对Nan的处理不一致,但这个例子表明情况并非如此。
任何帮助将不胜感激。谢谢!
更新: per @ EdChum暗示的建议,更新Python到Python 3.5.1 | Anaconda 2.4.1(64位)| (默认情况下,2015年12月7日,15:00:12)[winv上的MSC v.1900 64位(AMD64)]。
Pandas版本为0.17.1,Numpy为1.10.1。
以免你认为我疯了(如果有人带着这个错误来找我,我可能会这样做),这是小程序的一些运行的结果。错误似乎更罕见,但它们仍然会发生。 Errors on Windows 10 machine
有什么想法?某种类型的内存问题?如此简单的操作会导致间歇性错误?
更新#2 认为这可能是某种内存问题,因此重写代码以简单计算操作中的错误数。得到了这些高度可疑的结果:
>85 errors in 20000 runs on 10100 dataframe rows
>144 errors in 20000 runs on 10001 dataframe rows
>0 errors in 20000 runs on 10000 dataframe rows
>0 errors in 20000 runs on 9999 dataframe rows
10,000行并不是很多,但看起来这是个问题?我应该注意到熊猫是否有一些限制?
答案 0 :(得分:2)
此错误是由NumExpr版本2.4.4引起的。我们(Continuum)将很快更新此软件包,已经确认可以解决此问题。在此之前,您可以删除numexpr:
conda remove numexpr
请参阅此相关问题:https://github.com/pydata/pandas/issues/11743
编辑:NumExpr 2.4.6现在应该(01/14/16)可用。
答案 1 :(得分:0)
看起来问题出在Anaconda安装上。纯Python安装解决了Windows上的问题。可怕的小虫。每个看过它的人 - 谢谢你的帮助!