python tz_本地化:由于DST而不存在时间错误
我有一个数据框“s15_d”(143977行),带有一个tz naive列“actual_datetime”(2015年夏季航班从2015-03-29 00:00:00到2015-10-24 00:00:00:00。这正是Euope/阿姆斯特丹的夏令时(DST))。在转换为UTC之前,我想将其本地化到给定的时区(“欧洲/阿姆斯特丹”)。在本地化阶段,出现了一些问题:不存在时间错误:2015-03-29 02:15:34 我第一次投到datetime64[ns]python tz_本地化:由于DST而不存在时间错误,python,date,pandas,timezone,pytz,Python,Date,Pandas,Timezone,Pytz,我有一个数据框“s15_d”(143977行),带有一个tz naive列“actual_datetime”(2015年夏季航班从2015-03-29 00:00:00到2015-10-24 00:00:00:00。这正是Euope/阿姆斯特丹的夏令时(DST))。在转换为UTC之前,我想将其本地化到给定的时区(“欧洲/阿姆斯特丹”)。在本地化阶段,出现了一些问题:不存在时间错误:2015-03-29 02:15:34 我第一次投到datetime64[ns] s15_d.actual_date
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会引发异常“NoneExistentTimeError”。
好的,很明显是“2015-03-29 02:15:34”时间戳导致了问题,但即使在“实际日期时间”列中也不是这样:
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_本地化工作,但我也希望包括这些值,而不是排除它们。thnx您确定比较使用相同的时区吗?(如何解释
'2015-03-29 02:15:34'
是本地时区吗?是UTC吗?)您的本地时区是'Europe/Amsterdam'
?要进行调试,您能否迭代选择仍会引发错误的数据帧的较小子集?直到您可以隔离导致错误的行/日期。如果可能,提供一个独立的可重复的示例。您确定比较使用相同的时区吗?(如何解释'2015-03-29 02:15:34'
是本地时区吗?是UTC吗?)您的本地时区是'Europe/Amsterdam'
?要进行调试,您能否迭代选择仍会引发错误的数据帧的较小子集?直到您可以隔离导致错误的行/日期。如果可能,提供一个自包含的可复制示例。