python - Pandas 是否有办法仅针对特定日期进行基于时间的聚合?
问题描述
我有几个月的时间序列测量。测量每天最多进行一次,但不是每天都进行。我也有特定的日期,我想计算过去 30 天内的一些指标。日期不一定重叠。我正在寻找一种在 Pandas 中执行此操作的内置方法。
我知道使用带有偏移量的滚动聚合,但这让我的窗口锚定在测量的日子,而不是我真正想要平均值的日子。
我将构建一个示例:
import pandas as pd
T = pd.Timestamp
df = pd.DataFrame({'date': [T(2019, 8, 10),
T(2019, 8, 15),
T(2019, 8, 18)],
'measurement': [5, 4, 7]})
所以这是一个示例数据框:
date measurement
0 2019-08-10 5
1 2019-08-15 4
2 2019-08-18 7
这是我知道该怎么做:
df.rolling('30d', on='date', closed='left',
min_periods=0).aggregate('mean')
输出:
date measurement
0 2019-08-10 NaN
1 2019-08-15 5.0
2 2019-08-18 4.5
但这些不是我感兴趣的日期。我真正想要的是提供计算平均值的日期:
dates = [T(2019, 8, 12), T(2019, 8, 20)]
df.rolling('30d', TARGETS=dates, on='date',
closed='left',
min_periods=0).aggregate('mean')
输出:
date measurement
0 2019-08-12 NaN
1 2019-08-20 5.333333
我知道pandas.DataFrame.rolling
实际上并没有内置此功能。有没有办法做到这一点,我错过了?
解决方案
推荐阅读
- node.js - 如何在 Wordpress 中实现我的自定义登录页面?
- javascript - 如何向此 aria 自动旋转幻灯片添加交叉淡入淡出过渡
- javascript - 相关下拉选择 - 如何获取城市的“名称”而不是“id”提交?
- python - 从 python 自定义模块执行 Ansible 模块
- laravel - Laravel 导航菜单设置问题
- node.js - 如何将新的 Firebase 模拟器添加到我现有的项目中?
- c# - C# Windows 窗体:CreateEventSource 引发“不允许请求的注册表访问”
- python - 气流调度程序异常停止
- python - Python:根据另一个列表中的元素按索引从列表中删除元素
- javascript - 跨多个 Razor 视图布局定义通用样式表、JavaScript