python - 按时间窗口获取新的数据框
问题描述
我有一个以日期时间为索引的数据框和一些数据:
datetime | x | y | z
我想用df.rolling("5S")
. 这样我得到一个 5 秒的时间窗口,而不是应用一些函数,如平均值、标准、最小值或最大值。
我的目标是用应用了函数的新行替换时间窗口中的所有行:
window | x_mean | x_std | ... | z_min | z_max
滚动有能力吗?因为目前我可以为每一行添加一个平均值,而不是在新行中总结一个时间窗口。
解决方案
根据定义,滚动就是这样做的,即对于每一行,回顾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
.
推荐阅读
- java - 将 eclipseLink 与 gradle 一起使用时获取 ClassNotFoundException
- ruby-on-rails - 在 Rails 脚本中编写脚本以压缩 500kb 以下的所有图像
- typescript - 将一组参数化泛型类型转换为一个泛型类型,该泛型类型通过与原始泛型集分离的参数进行参数化
- algorithm - 相邻边对的最小生成树
- react-native - 在 utils.js 文件(React-Native)中调用异步函数?
- c++ - 用于类模板的 C++ GTest/GMock:调用真实方法而不是指定的模拟实现
- powershell - 修剪前导空格,然后将每行的第一个字母大写,如果行以 w 特定字符串开头,则从另一个文件添加新行 + 字符串 + $var
- teradata - Teradata 中的合并语句
- apache - 在 apache 反向代理后面提供了错误的证书
- python - Pyopengl:渲染时纹理颜色不同