尝试在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(data['myDate'])).tz_localize('US/Eastern').tz_convert('US/Eastern')`
在这里做一些研究,我知道12日凌晨2点到3点应该有这样的错误,但为什么午夜到凌晨1点。我正确地将其本地化吗?那么为什么追加线上的错误,而不是本地化线?
我能够在一个非常简单的MCVE中重现这种行为,保存在这里: https://codeshare.io/GLjrLe
我绝对难以理解,错误是在第三个追加上引发的,并且只有在接下来的3个附加后面才会出现错误。换句话说,如果我评论最后3个附加副本,它可以正常工作......无法想象发生了什么。
感谢您的阅读。
答案 0 :(得分:0)
如果其他人仍然觉得这有用:
与@ hashcode55谈论它,解决方案是在我的服务器上升级Pandas,因为这可能是我之前版本的该模块中的一个错误。
答案 1 :(得分:0)
该问题似乎发生在夏令时切换-每年不存在不存在的本地时间。在相反的方向会有重复的时间。
这可能是由于您输入的日期通过添加固定的偏移量而从UTC转换为“本地时间”。当您尝试对这些内容进行本地化时,您会在该小时内(如果您在阿德莱德,则为30分钟)遇到不存在的时间。