我正在尝试计算时间序列数据中每个10分钟窗口的滚动平均值。我有以下格式的数据框:
Date Time Reading
0 2016/08/01 0: 0: 0 7.297
1 2016/08/01 0: 0: 1 7.047
2 2016/08/01 0: 0: 2 6.826
3 2016/08/01 0: 0: 3 6.641
4 2016/08/01 0: 0: 4 6.694
5 2016/08/01 0: 0: 5 7.055
6 2016/08/01 0: 0: 6 7.676
7 2016/08/01 0: 0: 7 8.840
8 2016/08/01 0: 0: 8 9.150
9 2016/08/01 0: 0:10 8.790
10 2016/08/01 0: 0:11 8.840
11 2016/08/01 0: 0:12 8.650
12 2016/08/01 0: 0:13 8.280
13 2016/08/01 0: 0:14 7.834
14 2016/08/01 0: 0:15 7.897
15 2016/08/01 0: 0:16 7.828
16 2016/08/01 0: 0:17 7.964
17 2016/08/01 0: 0:18 8.270
18 2016/08/01 0: 0:19 8.310
19 2016/08/01 0: 0:20 8.200
20 2016/08/01 0: 0:21 8.380
21 2016/08/01 0: 0:22 8.460
22 2016/08/01 0: 0:23 8.400
23 2016/08/01 0: 0:24 8.060
24 2016/08/01 0: 0:25 8.040
25 2016/08/01 0: 0:26 8.690
26 2016/08/01 0: 0:27 9.090
27 2016/08/01 0: 0:29 8.750
28 2016/08/01 0: 0:30 8.670
如您所见,时间分辨率为1秒。但是,在样本26和27之间,您可以看到分辨率为2秒。我正在使用滚动方法,窗口= 600,这就是我意识到我在所有数据中实际上没有1秒的分辨率。我是熊猫的新手,所以我去查看文档,发现在最新的Pandas版本中,可以使用实际时间作为滚动平均值的窗口,如下:
df.resample('10min').mean()
这对我不起作用,因为我认为我的时间戳不是pandas时间戳格式。如何操纵我的数据以便熊猫识别我的时间戳?或者,有没有其他建议如何解决我的问题?
谢谢!
答案 0 :(得分:2)
我不确定Pandas会正确解析您的时间戳(通常表示小时分钟秒为HH:MM:SS
)但您可以尝试
df['timestamp'] = pd.to_datetime(df.pop('Date') + ' ' + df.pop('Time').str.replace(' ',''))
# check that this variable contains the correct timestamp
df.set_index('timestamp', inplace = True)