1

DataFrame我的错误与升级到 pandas 0.81 后构建 Pandas 的日期时间转换有关。具体来说,传递带有时区感知日期时间的 Django Queryset 的.from_records()方法会引发 datetime64 转换错误:

type(data)
> django.db.models.query.QuerySet

dv = data.values('begin_time', 'datum')
dv[0]
> {'begin_time': datetime.datetime(2006, 4, 27, 12, 40, tzinfo=<UTC>),
   'datum': Decimal('13.3097500')}

df = pd.DataFrame.from_records( dv, index='begin_time' )
> ValueError: Tz-aware datetime.datetime cannot be converted to datetime64
  unless utc=True

Django 日期时间是时区感知的,并且在我看来它设置为 UTC,所以我发现错误消息有点神秘,但这可能是我的失败。我对 Python 比较了解。

所以,我认为要么我需要: 1. 在某个地方设置 utc=true,如错误所示,但我不知道确切的位置或 2. 在 .from_records 中关闭到 datetime64 的转换,但我也没有知道在哪里。

谢谢你的帮助!

4

2 回答 2

0

您在解析时区时遇到了 pandas 0.8.1 中的错误:https ://github.com/pydata/pandas/issues/1693

标记为增强功能,所以也许我不理解并且可能有解决方法,但我很确定这只是一个错误。已经修复,但必须等待 0.8.2。这适用于 0.8.0(我只在升级后遇到了同样的错误)。您可以尝试回退到 0.8.0:

pip install -I pandas==0.8.0

只要 0.8.0 仍然满足在您的应用程序中使用 pandas 的任何其他要求。

或者您可能会尝试从https://github.com/pydata/pandas获取最新的并构建它,但可能不太稳定。

于 2012-08-15T21:26:42.120 回答
0

我在这里创建了一个问题:http: //github.com/pydata/pandas/issues/1825。我最近只是在研究这些东西,显然把它弄坏了(除非它现在可以在 git master 上运行)。

于 2012-08-30T00:02:38.547 回答