我如何捕获pandas DataError?

时间:2015-04-07 20:32:19

标签: python pandas error-handling

我已经修复了导致DataError的错误,但我不能为我的生活找出如何明确地捕获它:

try:
    df["my column"] = df.baddata + df.morebaddata
except DataError:
   print "Caught Error!"

给予:NameError: name 'DataError' is not defined

然后我尝试pd.core.frame.DataError并收到了AttributeError。我也试过谷歌搜索,但找不到大熊猫错误类型的列表。 DataError的正确路径是什么?

3 个答案:

答案 0 :(得分:6)

对于Pandas< = 0.22(之前的答案是给Django的),解决方案是由@ henrique-marciel提出的,但是使用了Pandas导入。所以

from pandas.core.groupby import DataError

并添加例外

except DataError:

对于Pandas> = 0.23,如ytu所述,API已更改,应使用以下导入:

from pandas.core.groupby.groupby import DataError

答案 1 :(得分:4)

我有同样的问题,你可以解决如下:

from django.db import DataError

添加例外

except DataError:

我设法解决了这个问题,下面是文档的链接。

Documentation

答案 2 :(得分:0)

最安全、最短的方法是:

from pandas.core.base import DataError

为什么

pandas.core.base 中,我们可以找到定义 DataError 的实际位置:

class DataError(Exception):
    pass

pandas.core.groupby.groupby 简单地按如下方式导入它,这在一些更新后更有可能中断:

from pandas.core.base import (
    DataError,
    PandasObject,
    SelectionMixin,
)