python - 获取滚动窗口是增加还是减少
问题描述
我有一个熊猫DataFrame
,我想计算一个移动窗口的每个间隔沿着它的一个列,该间隔内的数据是增加还是减少。对于增加/减少,我的意思是计算最后一个元素的符号减去第一个元素。
现在我有这个解决方案:
sign = data['col'].rolling('5d').apply(lambda x: np.sign(x[-1] - x[0]))
这个实现的问题是它对于长系列来说非常慢。您有使用内置优化功能的解决方案吗?
解决方案
如果您的“col”值是均匀采样的,您可以应用类似于下面的内容。
col = pandas.Series([1,-1,0,3,5,21,7,4,67,4,3,6,8,5,4])
sign = np.sign(col.values[0:-5] - col.values[5:])
本质上,您取第一个 N-window_len 并减去最后一个 N-window_len(这里我假设您每天都有一个数据点)。矢量运算将比使用滚动快得多
推荐阅读
- node.js - 如何解决错误:ENOENT:没有这样的文件或目录,打开“./sitemap_template.xml”
- amazon-web-services - 使用 AWS Lambda 作为中间件的 AWS API Gateway 代理
- reactjs - 我在响应模式下遇到移动键盘问题
- c++ - CUDA可分离编译+共享库->无效的设备功能/段错误
- openxml - python-pptx中的图像映射?
- css - 引导悬停表:禁用特定行的悬停效果
- java - 关于并发的问题
- python - 如何在 python 文件中使用“argparse”参数?
- excel - Office 脚本 Excel 数据透视表计数而不是总和
- javascript - 将模态值传递给 GeoJSON