Python 重建时间序列索引,返回1小时

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.

我有一个类似于上面的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.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')