为什么熊猫不会产生模糊的时间错误?

时间:2017-01-09 16:25:10

标签: python pandas timestamp dst

2016年daylight savings time在美国东部时间2am on 2016-03-13开始,在2am on 2016-11-06结束。因此,2016-03-13 02:30:00不是有效的时间戳,2016-11-06 01:30:00发生了两次。

我希望这段代码能够在模糊和不存在的时候抛出错误,但事实并非如此:

from pandas import Timestamp

no_such_time = "2016-03-13 02:30:00"
ambiguous_time = "2016-11-06 01:30:30"
est = 'US/Eastern'
utc = 'UTC'

ts1 = Timestamp(no_such_time, tz=est).tz_convert(utc)
ts2 = Timestamp(ambiguous_time, tz=est).tz_convert(utc)

为什么熊猫认为这两个都是有效时间?

我正在使用Pandas 0.14.1。

1 个答案:

答案 0 :(得分:1)

在此代码中:

ts1 = pd.Timestamp(no_such_time, tz=est)
ts2 = pd.Timestamp(ambiguous_time, tz=est)

pandas会将这两个时间转换为时区感知时间戳。它似乎没有任何潜在问题的意识(IE,它是非常宽容的)。转换后,时间戳已经在内部以UTC存储,并带有相关的时区。因此,对tz_convert的后续调用可以正常工作:

ts1 = pd.Timestamp(no_such_time, tz=est).tz_convert(utc)
ts2 = pd.Timestamp(ambiguous_time, tz=est).tz_convert(utc)

如果您确实想确定时间戳是否出错,可以通过以下方式完成:

ts1 = pd.Timestamp(no_such_time).tz_localize(est)
ts2 = pd.Timestamp(ambiguous_time).tz_localize(est)

在这些情况下,pandas将分别引发NonExistentTimeErrorAmbiguousTimeError