python tz_localize:由于DST

时间:2016-05-16 09:31:28

标签: python date pandas timezone pytz

我有一个数据框's15_d'(143977行),其中包含tz-naive列'actual_datetime'(从2015-03-29 00:00:00到2015-10-24,航班将从2015年夏季航班起飞00:00:00。这正是Euope / Amsterdam在夏令时(DST)的时间段。我希望在将其转换为UTC之前将其本地化到给定时区('Europe / Amsterdam')。在本地化阶段,出现问题:NonExistentTimeError:2015-03-29 02:15:34

我首先投射到datetime64 [ns]

s15_d.actual_datetime = s15_d.loc[:, ('actual_datetime')].apply(lambda x: pd.to_datetime(x, format = '%Y-%m-%d %H:%M:%S' , infer_datetime_format = True))

输出(前10行)如下所示:

2015-10-24 23:57:35
2015-10-24 23:50:52
2015-10-24 23:02:11
2015-10-24 22:33:09
2015-10-24 22:22:11
2015-10-24 22:19:17
2015-10-24 22:16:45
2015-10-24 22:13:20
2015-10-24 22:06:30
2015-10-24 21:59:19

如果我跑

s15_d.actual_datetime.dt.tz_localize('Europe/Amsterdam')

尝试本地化指定时区中不存在的日期时间时,会从pytz引发异常“NonExistentTimeError”。 好的,显然'2015-03-29 02:15:34'的时间戳会导致问题,但即使在actual_datetime列中,这也是

s15_d[s15_d.actual_datetime == '2015-03-29 02:15:34']

不返回任何行,因此引发的错误位于不存在的日期,甚至不在数据帧中。任何想法如何解决这个问题?也许摆脱Holland转换到DST的那一小时所有的行(从02:00到03:00?)已经尝试了很多东西。

最后一点。如果我过滤掉DST“危险区域”中的日期时间行,如下所示:

S15_filtered = s15_d[(s15_d.actual_datetime > '2015-03-29 05:00:00')]

tz_localize有效,但我想包含这些值,不排除它们。日Thnx

0 个答案:

没有答案