Python 3-pd.to_datetime无法识别时区

时间:2018-10-12 03:17:02

标签: python pandas timezone

我有以下datetime列,它知道“太平洋/奥克兰”的时区:

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小时而不是增加了13小时吗?

1 个答案:

答案 0 :(得分:0)

此问题已在Pandas开发中进行previously raised,并在#13712下进行了跟踪。

目前,一种解决方法是将您的时区感知字符串转换为pd.Timestamp,这可以正确推断时区,然后应用db = new sigma.plugins.neighborhoods(); db.load('data.json', function() { console.log(db.neighborhood('node_id')) });

pd.to_datetime

哪个给:

from pandas import Timestamp
converted = [Timestamp(t) for t in startTime]
pd.to_datetime(converted)