【问题标题】:Adding offset to timestamp in pandas在熊猫中为时间戳添加偏移量
【发布时间】:2017-12-04 01:16:53
【问题描述】:

我有一个数据框 df,当我运行 print(df.index) 时,我得到:

DatetimeIndex(['2011-08-05 00:00:00-04:00', '2011-08-05 01:00:00-04:00',
               '2011-08-05 02:00:00-04:00', '2011-08-05 03:00:00-04:00',
               '2011-08-05 04:00:00-04:00', '2011-08-05 05:00:00-04:00',
               '2011-08-05 06:00:00-04:00', '2011-08-05 07:00:00-04:00',
               '2011-08-05 08:00:00-04:00', '2011-08-05 09:00:00-04:00',
               ...
               '2017-07-30 14:00:00-04:00', '2017-07-30 15:00:00-04:00',
               '2017-07-30 16:00:00-04:00', '2017-07-30 17:00:00-04:00',
               '2017-07-30 18:00:00-04:00', '2017-07-30 19:00:00-04:00',
               '2017-07-30 20:00:00-04:00', '2017-07-30 21:00:00-04:00',
               '2017-07-30 22:00:00-04:00', '2017-07-30 23:00:00-04:00'],
              dtype='datetime64[ns, America/New_York]', name=u'Time', length=52488, freq=None)

我正在尝试修改 datetimeindex 对象,以便

  1. 系列中的第一个时间戳从'2011-08-05 00:00:00-04:00' 更改为'2011-08-04 20:00:00'
  2. 系列中的第二个印章将从'2011-08-05 00:00:00-04:00' 更改为'2011-08-04 21:00:00',以此类推。

我尝试了pd.to_datetime(df.index, format='%Y-%m-%d %H:%M:%S'),但它返回的datetimeindex 对象与上面相同。

如果将时间戳转换为字符串,我可以,所以我尝试了:

df.index.strftime('%Y-%m-%d %H:%M:%S')

但是两行代码都达不到我的最终目标。

【问题讨论】:

    标签: python pandas datetimeindex


    【解决方案1】:

    使用tz_convert 删除timezones 并添加Hours:

    df.index.tz_convert(None) + pd.offsets.Hour(16)
    

    或者:

    df.index.tz_convert(None) + pd.Timedelta(16, unit='h')
    

    示例:

    idx = ['2011-08-05 00:00:00-04:00', '2011-08-05 01:00:00-04:00', 
           '2011-08-05 02:00:00-04:00', '2011-08-05 03:00:00-04:00']
    idx = pd.DatetimeIndex(idx).tz_localize('UTC').tz_convert('America/New_York')
    print (idx)
    DatetimeIndex(['2011-08-05 00:00:00-04:00', '2011-08-05 01:00:00-04:00',
                   '2011-08-05 02:00:00-04:00', '2011-08-05 03:00:00-04:00'],
                  dtype='datetime64[ns, America/New_York]', freq=None)
    
    idx = idx.tz_convert(None) + pd.offsets.Hour(16)
    print (idx)
    DatetimeIndex(['2011-08-05 20:00:00', '2011-08-05 21:00:00',
                   '2011-08-05 22:00:00', '2011-08-05 23:00:00'],
                  dtype='datetime64[ns]', freq='H')
    

    【讨论】:

      猜你喜欢
      • 2021-10-16
      • 2016-10-23
      • 2013-06-16
      • 2020-06-19
      • 1970-01-01
      • 2016-04-29
      • 2018-02-20
      • 1970-01-01
      相关资源
      最近更新 更多