【问题标题】:Python 3 - pd.to_datetime is not recognizing the timezonePython 3 - pd.to_datetime 无法识别时区
【发布时间】:2018-10-12 03:17:01
【问题描述】:

我有以下日期时间列,它是“太平洋/奥克兰”时区感知的:

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 小时,让我给出新西兰奥克兰的本地化时间:

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

【问题讨论】:

    标签: python pandas timezone


    【解决方案1】:

    此问题已在 Pandas 开发中previously raised,并在#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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多