Pandas错误划分数据帧

时间:2016-01-05 10:14:40

标签: python pandas dataframe

我有一个奇怪的情况,其中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行并不是很多,但看起来这是个问题?我应该注意到熊猫是否有一些限制?

2 个答案:

答案 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上的问题。可怕的小虫。每个看过它的人 - 谢谢你的帮助!