我正在使用panda将字符串转换为时间戳。我有一个字符串如下'2016-03-12 18:09:19 PST'
。
如果我执行以下操作:
pd.to_datetime('2016-03-12 18:09:19 PST')
我得到:
Timestamp('2016-03-13 02:09:19')
我不知道为什么会发生这种事。与的行为形成对比
pd.to_datetime('2016-03-12 18:09:19')
哪个返回:
Timestamp('2016-03-12 18:09:19')
注意,时间Timestamp('2016-03-13 02:09:19')
实际上并不存在于美国/太平洋时间中。如果你尝试做pd.to_datetime('2016-03-12 18:09:19 PST').tz_localize('US/Pacific')
,你会得到一个NonExistentTimeError
。
为什么在字符串末尾引入"PST"会导致16小时的减法?to_datetime
是如何引入不可能的日期的?
Pandas正在将您的字符串转换为UTC时间。当省略"PST"时,问题就不存在了,因为Panda默认情况下假设您提供的时间戳已经是UTC,所以它没有进行转换。
您可以使用utc=False
关键字参数停止转换为UTC。
pd.to_datetime('2016-03-12 18:09:19 PST', utc=False)