【问题标题】:Cannot convert timezone for a timestamp in pandas无法为熊猫中的时间戳转换时区
【发布时间】:2022-07-21 18:19:28
【问题描述】:

我正在尝试使用以下代码将时间戳的时区转换为 UTC

s = pd.to_datetime(pd.Series(['2018-10-28 01:30:00',
                          '2018-10-28 02:00:00',
                          '2018-10-28 02:30:00',
                          '2018-10-28 02:00:00',
                          '2018-10-28 02:30:00',
                          '2018-10-28 03:00:00',
                          '2018-10-28 03:30:00']))


df = pd.DataFrame(s)

df = df.tz_localize(pytz.timezone('US/Eastern')).tz_convert(pytz.timezone('UTC'))

我收到了这个错误

TypeError: index 不是有效的 DatetimeIndex 或 PeriodIndex

【问题讨论】:

    标签: pandas


    【解决方案1】:

    对于处理Series 选择列0 并使用.dt 访问器:

    #if input is DataFrame with column 0
    df = pd.DataFrame(s)
    s = df[0].dt.tz_localize(pytz.timezone('US/Eastern')).dt.tz_convert(pytz.timezone('UTC'))
    print (s)
    0   2018-10-28 05:30:00+00:00
    1   2018-10-28 06:00:00+00:00
    2   2018-10-28 06:30:00+00:00
    3   2018-10-28 06:00:00+00:00
    4   2018-10-28 06:30:00+00:00
    5   2018-10-28 07:00:00+00:00
    6   2018-10-28 07:30:00+00:00
    Name: 0, dtype: datetime64[ns, UTC]
    

    #if input is Series
    s = s.dt.tz_localize(pytz.timezone('US/Eastern')).dt.tz_convert(pytz.timezone('UTC'))
    print (s)
    0   2018-10-28 05:30:00+00:00
    1   2018-10-28 06:00:00+00:00
    2   2018-10-28 06:30:00+00:00
    3   2018-10-28 06:00:00+00:00
    4   2018-10-28 06:30:00+00:00
    5   2018-10-28 07:00:00+00:00
    6   2018-10-28 07:30:00+00:00
    dtype: datetime64[ns, UTC]
    

    【讨论】:

      猜你喜欢
      • 2014-10-28
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 2019-04-26
      • 2020-04-16
      • 2020-01-27
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多