如何用pandas中的其他值替换时间序列数据索引?

如何用pandas中的其他值替换时间序列数据索引?,pandas,indexing,time,time-series,Pandas,Indexing,Time,Time Series,我有下面的数据框。每天我都得9分。 日期、时间为多索引索引。 我想每天在其他时间00:00:00~2:00:00替换时间索引 Date Time a b c 2018-01-09 6:00:00 20.31 0 -2.95 2018-01-09 6:15:00 20.76 26738 -2.88 2018-01-09 6:30:00 21.4 22462 -2.77 2018-01-09 6:45:00 21.84 20

我有下面的数据框。每天我都得9分。 日期、时间为多索引索引。 我想每天在其他时间00:00:00~2:00:00替换时间索引

Date        Time     a      b    c
2018-01-09  6:00:00 20.31   0   -2.95
2018-01-09  6:15:00 20.76   26738   -2.88
2018-01-09  6:30:00 21.4    22462   -2.77
2018-01-09  6:45:00 21.84   20033   -3
2018-01-09  7:00:00 22.17   20010   -3.28
2018-01-09  7:15:00 22.38   18133   -2.82
2018-01-09  7:30:00 22.75   18254   -3.14
2018-01-09  7:45:00 22.93   17039   -3.22
2018-01-09  8:00:00 23.13   15934   -3.27
2018-01-10  6:00:00 20.31   0   -2.95
2018-01-10  6:15:00 20.76   26738   -2.88
2018-01-10  6:30:00 21.4    22462   -2.77
2018-01-10  6:45:00 21.84   20033   -3
2018-01-10  7:00:00 22.17   20010   -3.28
2018-01-10  7:15:00 22.38   18133   -2.82
2018-01-10  7:30:00 22.75   18254   -3.14
2018-01-10  7:45:00 22.93   17039   -3.22
2018-01-10  8:00:00 23.13   15934   -3.27
所以结果应该在下面

Date        Time     a      b    c
2018-01-09  0:00:00      20.31   0   -2.95
2018-01-09  0:15:00 20.76   26738   -2.88
2018-01-09  0:30:00 21.4    22462   -2.77
2018-01-09  0:45:00 21.84   20033   -3
2018-01-09  1:00:00 22.17   20010   -3.28
2018-01-09  1:15:00 22.38   18133   -2.82
2018-01-09  1:30:00 22.75   18254   -3.14
2018-01-09  1:45:00 22.93   17039   -3.22
2018-01-09  2:00:00 23.13   15934   -3.27
2018-01-10  0:00:00 20.31   0   -2.95
2018-01-10  0:15:00 20.76   26738   -2.88
2018-01-10  0:30:00 21.4    22462   -2.77
2018-01-10  0:45:00 21.84   20033   -3
2018-01-10  1:00:00 22.17   20010   -3.28
2018-01-10  1:15:00 22.38   18133   -2.82
2018-01-10  1:30:00 22.75   18254   -3.14
2018-01-10  1:45:00 22.93   17039   -3.22
2018-01-10  2:00:00 23.13   15934   -3.27

如何执行此操作?

如果要以15分钟为间隔,以天为单位替换所有值,您可以首先创建用于映射的词汇表:

d = dict(enumerate(pd.date_range(start='2018-01-01', end='2018-01-02', freq='15T').strftime('%H:%M:%S')))
print (d)
{0: '00:00:00', 1: '00:15:00', 2: '00:30:00', 3: '00:45:00', 4: '01:00:00', 5: '01:15:00', 6: '01:30:00', 7: '01:45:00', 8: '02:00:00', 9: '02:15:00', 10: '02:30:00', 11: '02:45:00', 12: '03:00:00', 13: '03:15:00', 14: '03:30:00', 15: '03:45:00', 16: '04:00:00', 17: '04:15:00', 18: '04:30:00', 19: '04:45:00', 20: '05:00:00', 21: '05:15:00', 22: '05:30:00', 23: '05:45:00', 24: '06:00:00', 25: '06:15:00', 26: '06:30:00', 27: '06:45:00', 28: '07:00:00', 29: '07:15:00', 30: '07:30:00', 31: '07:45:00', 32: '08:00:00', 33: '08:15:00', 34: '08:30:00', 35: '08:45:00', 36: '09:00:00', 37: '09:15:00', 38: '09:30:00', 39: '09:45:00', 40: '10:00:00', 41: '10:15:00', 42: '10:30:00', 43: '10:45:00', 44: '11:00:00', 45: '11:15:00', 46: '11:30:00', 47: '11:45:00', 48: '12:00:00', 49: '12:15:00', 50: '12:30:00', 51: '12:45:00', 52: '13:00:00', 53: '13:15:00', 54: '13:30:00', 55: '13:45:00', 56: '14:00:00', 57: '14:15:00', 58: '14:30:00', 59: '14:45:00', 60: '15:00:00', 61: '15:15:00', 62: '15:30:00', 63: '15:45:00', 64: '16:00:00', 65: '16:15:00', 66: '16:30:00', 67: '16:45:00', 68: '17:00:00', 69: '17:15:00', 70: '17:30:00', 71: '17:45:00', 72: '18:00:00', 73: '18:15:00', 74: '18:30:00', 75: '18:45:00', 76: '19:00:00', 77: '19:15:00', 78: '19:30:00', 79: '19:45:00', 80: '20:00:00', 81: '20:15:00', 82: '20:30:00', 83: '20:45:00', 84: '21:00:00', 85: '21:15:00', 86: '21:30:00', 87: '21:45:00', 88: '22:00:00', 89: '22:15:00', 90: '22:30:00', 91: '22:45:00', 92: '23:00:00', 93: '23:15:00', 94: '23:30:00', 95: '23:45:00', 96: '00:00:00'}
然后用于计数器和:

对于第一级索引,上次通过重新分配新索引:

df = df.set_index([df.index.get_level_values(0), s])
print (df)
                         a      b     c
Date                                   
2018-01-09 00:00:00  20.31      0 -2.95
           00:15:00  20.76  26738 -2.88
           00:30:00  21.40  22462 -2.77
           00:45:00  21.84  20033 -3.00
           01:00:00  22.17  20010 -3.28
           01:15:00  22.38  18133 -2.82
           01:30:00  22.75  18254 -3.14
           01:45:00  22.93  17039 -3.22
           02:00:00  23.13  15934 -3.27
2018-01-10 00:00:00  20.31      0 -2.95
           00:15:00  20.76  26738 -2.88
           00:30:00  21.40  22462 -2.77
           00:45:00  21.84  20033 -3.00
           01:00:00  22.17  20010 -3.28
           01:15:00  22.38  18133 -2.82
           01:30:00  22.75  18254 -3.14
           01:45:00  22.93  17039 -3.22
           02:00:00  23.13  15934 -3.27

我认为仅仅减去小时是不合适的。。。j想要以“时间”为x轴,以天为图例绘制数据。。所以我只是将每天的时间索引值替换为00:00:00~02:00:00,不依赖于原始的时间索引..哇,真是太棒了。。thx..还有一个相关的小问题,如果我想根据数据自动设置开始、结束日期,数据可能有很多天..那我怎么做呢?
df = df.set_index([df.index.get_level_values(0), s])
print (df)
                         a      b     c
Date                                   
2018-01-09 00:00:00  20.31      0 -2.95
           00:15:00  20.76  26738 -2.88
           00:30:00  21.40  22462 -2.77
           00:45:00  21.84  20033 -3.00
           01:00:00  22.17  20010 -3.28
           01:15:00  22.38  18133 -2.82
           01:30:00  22.75  18254 -3.14
           01:45:00  22.93  17039 -3.22
           02:00:00  23.13  15934 -3.27
2018-01-10 00:00:00  20.31      0 -2.95
           00:15:00  20.76  26738 -2.88
           00:30:00  21.40  22462 -2.77
           00:45:00  21.84  20033 -3.00
           01:00:00  22.17  20010 -3.28
           01:15:00  22.38  18133 -2.82
           01:30:00  22.75  18254 -3.14
           01:45:00  22.93  17039 -3.22
           02:00:00  23.13  15934 -3.27