python - 为什么我在 2017-03-12 的 12 点到凌晨 1 点之间的时间戳在 python 中得到 NonExistentTimeError

标签 python pandas dataframe timezone

尝试在 for 循环中将两个 Pandas DF 附加在一起时出现此错误:

Aggdata=Aggdata.append(Newdata)

这是完整的错误:

File "pandas\tslib.pyx", line 4096, in pandas.tslib.tz_localize_to_utc (pandas
\tslib.c:69713)
pytz.exceptions.NonExistentTimeError: 2017-03-12 02:01:24

但是,在我的文件中,我没有这样的时间戳,但我确实有像 03/12/17 00:45:26 或 03/12/17 00:01:24 这样的时间戳。夏令时前 2 小时。如果我手动删除有问题的行,我会在 3 月 12 日凌晨 12 点到凌晨 1 点之间的下一行得到同样的错误。

我的原始日期/时间列没有 TZ 信息,但我计算了 EST 中的另一列,在连接之前将其本地化为 EST,并带有时间和 TZ 信息:

`data['EST_DateTimeStamp']=pd.DatetimeIndex(pd.to_datetime(da‌​ta['myDate'])).tz_lo‌​calize('US/Eastern')‌​.tz_convert('US/East‌​ern')`

在这里做了一些研究,我知道 12 号凌晨 2 点到 3 点应该有这样的错误,但为什么午夜到凌晨 1 点。那么我是否错误地对其进行了本地化?然后为什么错误出现在追加行,而不是本地化行?

我能够在一个非常简单的 MCVE 中重现此行为,保存在这里: https://codeshare.io/GLjrLe

令我难以置信的是,错误是在第三次追加时引发的,并且只有在接下来的 3 次追加之后才会出现。换句话说,如果我注释掉附加的最后 3 个副本,它工作正常。无法想象发生了什么。

感谢阅读。

最佳答案

如果其他人可能仍然觉得这有帮助:

与@hashcode55 讨论,解决方案是在我的服务器上升级 Pandas,因为这可能是我以前版本的模块中的一个错误。

关于python - 为什么我在 2017-03-12 的 12 点到凌晨 1 点之间的时间戳在 python 中得到 NonExistentTimeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42826784/

相关文章:

python - Pandas read_excel 返回 'not enough values to unpack (expected 2, got 1)'

python - 我可以让这段代码更有效率吗?目前运行约 100 万条条目需要约 6 小时

python - 通过查找 NaN 将 pandas 数据帧拆分为多个数据帧

python - Keras 与 Caffe 中的卷积有什么区别?

python - 如何正确设置返回 python 中年份差异的函数?

python - 如何从 Pandas 数据帧中获取 1's and 0' 的最大连续数量

python - 对数组执行 argsort 操作时出现 IndexError

由列表索引的python数据框

Python 处理异常

python - 如何将 python 日期时间转换为具有可读格式日期的字符串?