在过去的时间间隔内,使用熊猫数据框连续计算平均值

问题描述 投票:0回答:1

[我相信我的问题确实很简单,并且必须有一种非常简单的方法来解决此问题,但是由于我对使用时间戳记并不十分自信,因此我无法自行解决该问题。

我给出了以下示例,它代表了我一直在努力的一个简单案例。在那里,您可以看到我在一个小时的时间内组成了一个由速度信号(它是输入)组成的数据帧。

import pandas as pd
import numpy as np

start = pd.Timestamp('2019-11-15T16:00')
end = pd.Timestamp('2019-11-15T17:00')
t = np.linspace(start.value, end.value, 60*60+1)
data = pd.DataFrame([])
data['Timestamp'] = pd.to_datetime(t)

noise = np.random.normal(0,1,3601)
data['Speed'] = 10*abs(np.random.randn(3601))+noise

我将实现一个控制器,该控制器将限制该速度信号,但这不在问题的范围内。因此,我正在寻找一种可以遍历for i,val in enumerate(data['Speed'].values):列并计算每个循环最近10秒的平均速度的方法。因此,该想法是针对每个新迭代,计算过去10个值的平均值。

希望我能做到简洁明了。非常感谢您在此方面的帮助!也欢迎提出查询建议。

python pandas dataframe
1个回答
0
投票
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.resample.html

data['Speed_10s_mean'] = data['Speed'].rolling(10).mean()

结果

Timestamp Speed Speed_10s_mean 0 2019-11-15 16:00:00 6.467616 NaN 1 2019-11-15 16:00:01 1.233462 NaN 2 2019-11-15 16:00:02 9.136592 NaN 3 2019-11-15 16:00:03 18.617069 NaN 4 2019-11-15 16:00:04 7.628102 NaN 5 2019-11-15 16:00:05 11.840941 NaN 6 2019-11-15 16:00:06 7.788474 NaN 7 2019-11-15 16:00:07 13.069130 NaN 8 2019-11-15 16:00:08 5.549147 NaN 9 2019-11-15 16:00:09 0.596765 8.192730 10 2019-11-15 16:00:10 13.273170 8.873285 11 2019-11-15 16:00:11 19.339124 10.683851 12 2019-11-15 16:00:12 18.659298 11.636122 13 2019-11-15 16:00:13 4.094160 10.183831 14 2019-11-15 16:00:14 13.240686 10.745089 15 2019-11-15 16:00:15 17.535431 11.314539 16 2019-11-15 16:00:16 28.936041 13.429295 17 2019-11-15 16:00:17 6.081373 12.730520 18 2019-11-15 16:00:18 16.009562 13.776561 19 2019-11-15 16:00:19 1.101115 13.826996 ...

© www.soinside.com 2019 - 2024. All rights reserved.