如何捕获 pandas DataError?

How can I catch a pandas DataError?

我已经修复了导致 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。我也尝试使用谷歌搜索,但找不到 pandas 错误类型的列表。 DataError 的正确路径是什么?

我也遇到了同样的问题,您可以按如下方式解决:

from django.db import DataError

添加例外

except DataError:

我这样解决了,下面是文档的link

Documentation

对于 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

最安全最快捷的方式是:

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,
)