首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python3- pd.to_datetime没有识别时区

Python3- pd.to_datetime没有识别时区
EN

Stack Overflow用户
提问于 2018-10-12 03:17:01
回答 1查看 141关注 0票数 1

我有以下datetime列,该列的时区知道“Pacific/Auckland”:

代码语言:javascript
复制
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应用于列时,时间不会相应地被转换。

我明白了:

代码语言:javascript
复制
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的本地化时间:

代码语言:javascript
复制
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个小时而不是加进去吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-12 08:14:30

这个问题已经在Pandas开发中被先前提出处理过,并且在#13712下被跟踪。

现在,一个解决方法是将您的时区感知字符串转换为pd.Timestamp,这将正确地推断时区,然后应用pd.to_datetime

代码语言:javascript
复制
from pandas import Timestamp
converted = [Timestamp(t) for t in startTime]
pd.to_datetime(converted)

这意味着:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52771707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档