我有一个每周列的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。请让我知道改变这个的好方法。谢谢你
答案 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)