我有以下datetime列,该列的时区知道“Pacific/Auckland”:
startTime = ['2018-10-10 23:00:00+1300'
, '2018-10-11 04:00:00+1300'
, '2018-10-10 17:30:00+1300'
, '2018-10-10 17:30:00+1300'
, '2018-10-11 04:00:00+1300'
, '2018-10-10 19:00:00+1300']当我将pd.to_datetime应用于列时,时间不会相应地被转换。
我明白了:
pd.to_datetime(startTime)
DatetimeIndex(['2018-10-10 10:00:00'
, '2018-10-10 15:00:00'
, '2018-10-10 04:30:00'
, '2018-10-10 04:30:00'
, '2018-10-10 15:00:00'
, '2018-10-10 06:00:00']
, dtype='datetime64[ns]'
, freq=None)我预计+13小时会加在不减的地方,这样我就可以给出奥克兰NZ的本地化时间:
DatetimeIndex(['2018-10-11 12:00:00'
, '2018-10-11 17:00:00'
, ‘2018-10-11 06:30:00'
, ‘2018-10-11 06:30:00'
, ‘2018-10-11 17:00:00'
, ‘2018-10-11 08:00:00']
, dtype='datetime64[ns]'
, freq=None)有人能帮我理解一下为什么pd.to_datetime要减去13个小时而不是加进去吗?
发布于 2018-10-12 08:14:30
这个问题已经在Pandas开发中被先前提出处理过,并且在#13712下被跟踪。
现在,一个解决方法是将您的时区感知字符串转换为pd.Timestamp,这将正确地推断时区,然后应用pd.to_datetime。
from pandas import Timestamp
converted = [Timestamp(t) for t in startTime]
pd.to_datetime(converted)这意味着:
DatetimeIndex(['2018-10-10 23:00:00+13:00', '2018-10-11 04:00:00+13:00',
'2018-10-10 17:30:00+13:00', '2018-10-10 17:30:00+13:00',
'2018-10-11 04:00:00+13:00', '2018-10-10 19:00:00+13:00'],
dtype='datetime64[ns, pytz.FixedOffset(780)]', freq=None)https://stackoverflow.com/questions/52771707
复制相似问题