【问题标题】:Pandas rolling mean on time series熊猫在时间序列上滚动平均值
【发布时间】:2017-03-14 23:13:27
【问题描述】:

我正在尝试根据时间序列数据计算每个 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 的新手,所以我去看了文档,发现在最新的 Pandas 版本中,可以使用实际时间作为滚动平均值的窗口,如:

df.resample('10min').mean()

这对我不起作用,因为我认为我的时间戳不是 pandas 时间戳格式。如何操作我的数据,以便 pandas 识别我的时间戳?或者,对于如何解决我的问题还有其他建议吗?

谢谢!

【问题讨论】:

    标签: python-2.7 pandas


    【解决方案1】:

    我不确定 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)
    

    【讨论】:

    • 如果您希望pd.to_datetime() 正确解析,请使用df['Timestamp'] = pd.to_datetime(df.pop('Date') + ' ' + df.pop('Time').str.replace(' ',''))...
    • 谢谢。那行得通。不过我有一个问题,为什么 str.replace(' ','') ???
    猜你喜欢
    • 2017-08-03
    • 2013-03-24
    • 2017-09-12
    • 1970-01-01
    • 2019-07-27
    • 2020-07-30
    相关资源
    最近更新 更多