我有一个具有以下数据时间索引的数据框:
DatetimeIndex(['2018-10-17 00:00:00', '2018-10-17 01:00:00',
'2018-10-17 02:00:00', '2018-10-17 03:00:00',
'2018-10-17 04:00:00', '2018-10-17 05:00:00',
'2018-10-17 06:00:00', '2018-10-17 07:00:00',
'2018-10-17 08:00:00', '2018-10-17 09:00:00',
...
'2018-11-29 15:00:00', '2018-11-29 16:00:00',
'2018-11-29 17:00:00', '2018-11-29 18:00:00',
'2018-11-29 19:00:00', '2018-11-29 20:00:00',
'2018-11-29 21:00:00', '2018-11-29 22:00:00',
'2018-11-29 23:00:00', '2018-11-30 00:00:00'],
dtype='datetime64[ns]', name='dates', length=914, freq=None)
如何将其转换为第一个日期时间索引的小时数,即0、1、2 ...
答案 0 :(得分:1)
您可以从索引中的所有值中减去第一个日期时间,然后除以numpy.timedelta(1,'h')
(1小时的时间差):
(df.index - df.index[0]) / np.timedelta64(1,'h')
Float64Index([ 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0,
8.0, 9.0,
...
1047.0, 1048.0, 1049.0, 1050.0, 1051.0, 1052.0,
1053.0, 1054.0, 1055.0, 1056.0],
dtype='float64', name='dates')
答案 1 :(得分:0)
您的问题似乎暗示索引是原始时间戳在小时上,并且结果应该是整数,在这种情况下,我将修改sacul对类似
的答案24*(idx - idx[0]).days + idx.hour
Int64Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1047,
1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056],
dtype='int64', name='dates')
,并使用components
的{{1}}属性处理剩余的分钟,秒和等。,以便仅使用已经公开的属性。