Python 如何将以小时(h)为索引单位的熊猫时间序列转换为熊猫日期时间格式?
我正在处理时间序列数据,其中我的pandas数据帧具有以小时为单位指定的索引,如下所示:Python 如何将以小时(h)为索引单位的熊猫时间序列转换为熊猫日期时间格式?,python,pandas,datetime,time-series,Python,Pandas,Datetime,Time Series,我正在处理时间序列数据,其中我的pandas数据帧具有以小时为单位指定的索引,如下所示: [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, ...] 这种情况持续了几千个小时。我知道第一次测量是在2017年5月1日12:00进行的。如何使用此信息将索引转换为pandas datetime格式?您可以在forDatetimeIndex中通过参数origin向索引添加小时数: idx = [0.0, 0.2, 0.4
[0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, ...]
这种情况持续了几千个小时。我知道第一次测量是在2017年5月1日12:00进行的。如何使用此信息将索引转换为pandas datetime格式?您可以在for
DatetimeIndex中通过参数origin
向索引添加小时数:
idx = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4]
df = pd.DataFrame({'a':range(13)}, index=idx)
start = 'May 1, 2017 12:00'
df.index = pd.to_datetime(df.index, origin=start, unit='h')
print (df)
a
2017-05-01 12:00:00 0
2017-05-01 12:12:00 1
2017-05-01 12:24:00 2
2017-05-01 12:36:00 3
2017-05-01 12:48:00 4
2017-05-01 13:00:00 5
2017-05-01 13:12:00 6
2017-05-01 13:24:00 7
2017-05-01 13:36:00 8
2017-05-01 13:48:00 9
2017-05-01 14:00:00 10
2017-05-01 14:12:00 11
2017-05-01 14:24:00 12
您可以使用pandas.date\u range
根据索引的长度指定时段的数量(在本例列表中),并指定频率,在本例中为12min
或1/5h
:
l = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4]
data = {'Num':np.random.randint(1, 10, size=len(l))}
idx = pd.date_range(start=pd.Timestamp(2017, 5, 1, 12), periods=len(l), freq='12T')
df = pd.DataFrame(data = data, index= idx)
虽然我喜欢你的答案,但我接受了耶斯雷尔的答案,因为它可以使用任何时间序列的测量,而不仅仅是周期性的测量。然而,当一个人需要这种完美的周期性,并且在原始序列中可能发生舍入错误时,你的答案可能会派上用场。
print(df)
Num
2017-05-01 12:00:00 8
2017-05-01 12:12:00 3
2017-05-01 12:24:00 3
2017-05-01 12:36:00 4
2017-05-01 12:48:00 8
2017-05-01 13:00:00 3
2017-05-01 13:12:00 6
2017-05-01 13:24:00 3
2017-05-01 13:36:00 4
2017-05-01 13:48:00 9
2017-05-01 14:00:00 5
2017-05-01 14:12:00 2
2017-05-01 14:24:00 6