首页 > 解决方案 > 按时间窗口获取新的数据框

问题描述

我有一个以日期时间为索引的数据框和一些数据:

datetime | x | y | z

我想用df.rolling("5S"). 这样我得到一个 5 秒的时间窗口,而不是应用一些函数,如平均值、标准、最小值或最大值。

我的目标是用应用了函数的新行替换时间窗口中的所有行:

window | x_mean | x_std | ... | z_min | z_max 

滚动有能力吗?因为目前我可以为每一行添加一个平均值,而不是在新行中总结一个时间窗口。

标签: pythonpandasdataframe

解决方案


根据定义,滚动就是这样做的,即对于每一行,回顾5s并进行聚合。因此,您可以获得每一行的统计信息。

举个例子:

np.random.seed(42)
df = pd.DataFrame({'x': np.random.rand(1000)}, 
                  index=pd.date_range('2020-01-01', freq='S', periods=1000))

然后

df.rolling('5S').agg(['min','max', 'std'])

有 1000 行,与df.

我相信您正在寻找groupby

df.groupby(pd.Grouper(freq='5S')).agg(['min','max','std'])

给出 200 行,每个5s.


推荐阅读