Python 重建时间序列索引,返回1小时
我有一个类似于上面的timeseries数据,我想用相同的o,h,l,c,v值重新制作索引1小时。比如:2020-11-20 20:00:00将是->2020-11-20 19:00:00 我正在使用以下命令将索引转换为字符串:Python 重建时间序列索引,返回1小时,python,pandas,time,time-series,Python,Pandas,Time,Time Series,我有一个类似于上面的timeseries数据,我想用相同的o,h,l,c,v值重新制作索引1小时。比如:2020-11-20 20:00:00将是->2020-11-20 19:00:00 我正在使用以下命令将索引转换为字符串: open high low close volume 2020-11-19 19:00:00 6.96 7.84 6.76 7.74 40061 2020-11-19 20:00:00 7.69 8.
open high low close volume
2020-11-19 19:00:00 6.96 7.84 6.76 7.74 40061
2020-11-19 20:00:00 7.69 8.50 7.45 8.00 34025
2020-11-20 08:00:00 8.89 11.00 8.89 9.75 21143
2020-11-20 09:00:00 9.99 18.00 9.99 13.50 85387
2020-11-20 10:00:00 13.60 16.70 12.00 12.30 697481
2020-11-20 11:00:00 12.30 13.13 11.51 11.93 338253
2020-11-20 12:00:00 11.95 13.87 11.75 12.45 369936
2020-11-20 13:00:00 12.52 13.00 12.50 12.98 124967
2020-11-20 14:00:00 13.18 15.60 13.14 14.01 557167
2020-11-20 15:00:00 14.00 14.00 12.72 13.50 189481
2020-11-20 16:00:00 13.51 14.34 13.46 13.90 440768
2020-11-20 17:00:00 13.90 14.40 13.52 14.40 11724
2020-11-20 18:00:00 14.39 14.40 13.90 14.15 5474
2020-11-20 19:00:00 14.01 14.05 13.75 13.75 3794
2020-11-20 20:00:00 14.40 14.48 14.00 14.40 3152
然后尝试下面的代码。如果我只想更改一次,但对于整个df,所有时间都变为00:00:00??,它就工作了
df.index = df.index.astype(str)
有什么想法吗?或者是一个简单的方法?仅供参考:由于市场关闭时间,某些小时已丢失。请尝试:
df.index = df.index.str.replace(r'00:00:00', '23:00:00', regex=True)
df.index = df.index.str.replace(r'23:00:00', '22:00:00', regex=True)
df.index = df.index.str.replace(r'22:00:00', '21:00:00', regex=True)
df.index = df.index.str.replace(r'21:00:00', '20:00:00', regex=True)
df.index = df.index.str.replace(r'20:00:00', '19:00:00', regex=True)
df.index = df.index.str.replace(r'19:00:00', '18:00:00', regex=True)
df.index = df.index.str.replace(r'18:00:00', '17:00:00', regex=True)
df.index = df.index.str.replace(r'17:00:00', '16:00:00', regex=True)
df.index = df.index.str.replace(r'16:00:00', '15:00:00', regex=True)
df.index = df.index.str.replace(r'15:00:00', '14:00:00', regex=True)
df.index = df.index.str.replace(r'14:00:00', '13:00:00', regex=True)
df.index = df.index.str.replace(r'13:00:00', '12:00:00', regex=True)
df.index = df.index.str.replace(r'12:00:00', '11:00:00', regex=True)
df.index = df.index.str.replace(r'11:00:00', '10:00:00', regex=True)
df.index = df.index.str.replace(r'10:00:00', '09:00:00', regex=True)
df.index = df.index.str.replace(r'09:00:00', '08:00:00', regex=True)
df.index = df.index.str.replace(r'08:00:00', '07:00:00', regex=True)
df.index = df.index.str.replace(r'07:00:00', '06:00:00', regex=True)
df.index = df.index.str.replace(r'06:00:00', '05:00:00', regex=True)
df.index = df.index.str.replace(r'05:00:00', '04:00:00', regex=True)
df.index = df.index.str.replace(r'04:00:00', '03:00:00', regex=True)
df.index = df.index.str.replace(r'03:00:00', '02:00:00', regex=True)
df.index = df.index.str.replace(r'02:00:00', '01:00:00', regex=True)
df.index = df.index.str.replace(r'01:00:00', '00:00:00', regex=True)
为什么不简单地减去一个
Timedelta
,比如df.index=df.index-pd.Timedelta(小时=1)
?谢谢@HenryYik
df.index = pd.to_datetime(df.index)
df.index = df.index - np.timedelta64(60,'m')