为什么 Pandas 不产生不明确的时间错误?
Why Doesn't Pandas Produce an Ambiguous Time Error?
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 认为这两个都是有效时间?
我正在使用 Pandas 0.14.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
将分别引发 NonExistentTimeError
和 AmbiguousTimeError
。
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 认为这两个都是有效时间?
我正在使用 Pandas 0.14.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
将分别引发 NonExistentTimeError
和 AmbiguousTimeError
。