我使用dataframe.index = dataframe.index.tz_localize('Iran')
来本地化我的Pandas数据框架日期时间索引。问题是Django上升了一个NonExistentTimeError
。
Django setting.py
timezone设置为我的本地时区。TIME_ZONE = 'Iran'
Dataframe:
2014-08-11 12:00:00+00:00 3076.366
2014-08-11 11:45:00+00:00 3076.367
2014-08-11 11:30:00+00:00 3076.385
2014-08-11 11:15:00+00:00 3076.417
2014-08-11 11:00:00+00:00 3076.466
2014-08-11 10:45:00+00:00 3076.532
2014-08-11 10:30:00+00:00 3076.611
2014-08-11 10:15:00+00:00 3076.702
2014-08-11 10:00:00+00:00 3076.802
2014-08-11 09:45:00+00:00 3076.910
In [112]:dataframe.index.tzinfo
In [113]:<StaticTzInfo 'GMT'>
[10行x 1列]
当您尝试本地化在您指定的时区中不存在的datetime
时,将从pytz引发异常NonExistentTimeError
。
如果你想知道为什么时间"不存在",考虑一下许多时区的当地时间都受到夏令时的影响。偶尔也会受到地方政府变动的影响。
在您的特殊情况下,您显示的所有值都是在2014年8月11日。如图所示,伊朗直到2014年9月21日才开始夏令时过渡。如果你的一个值是2014-09-21 11:30:00
,那么它是有意义的。我只能得出结论,您没有显示导致错误的实际数据。请检查你的数据。
另外,您应该使用完整的时区名称,即'Asia/Tehran'
。虽然'Iran'
现在可以工作,但它只是一个向后兼容链接,您应该使用规范区域名称。