Python Pandas:每周列(int)到Timestamp列的转换(以周为单位)

时间:2018-01-15 09:51:04

标签: python pandas timestamp time-series

我有一个每周列的df,如下所示。我想将列索引更改为时间戳。这是我的df.columns

df.columns:
Int64Index([201601, 201602, 201603, 201604, 201605, 201606, 201607,
        201608, 201609,
        ...],
       dtype='int64', name='timeline', length=104)

df.columns[0]:
201553

我想将df.columns更改为时间戳,如下所示

 df.columns:
 DatetimeIndex(['2016-01-04', '2016-01-11', '2016-01-18', '2016-01-25',
           '2016-02-01', '2016-02-08', '2016-02-15', '2016-02-22',
           '2016-02-29'.....],
           dtype='int64', name='timeline', length=104)
df.columns[0]:
Timestamp('2016-01-04 00:00:00')

底线是我的df.columns是int格式,表示yyyyww值。从这个int,我想把它改成显示每周星期一的Timestamp。请让我知道改变这个的好方法。谢谢你

1 个答案:

答案 0 :(得分:3)

您可以使用to_datetime,但首先为1添加Monday,并将%W%w一起使用:

Source - http://strftime.org/

  

%w 工作日作为十进制数,其中0表示星期日,6表示星期六   %W 一年中的周数(星期一作为一周的第一天)作为十进制数。在第一个星期一之前的新年中的所有日子都被认为是在第0周。

a = pd.Int64Index([201601, 201602, 201603, 201604, 201605, 201606, 201607,
        201608, 201609])

print (pd.to_datetime(a.astype(str) + '1', format='%Y%W%w'))
DatetimeIndex(['2016-01-04', '2016-01-11', '2016-01-18', '2016-01-25',
               '2016-02-01', '2016-02-08', '2016-02-15', '2016-02-22',
               '2016-02-29'],
              dtype='datetime64[ns]', freq=None)