python - 如何生成条件滚动平均值?
问题描述
我希望能够根据在单独列中标记为 True 的值对 Data 列执行滚动平均值。下面是一个示例数据集。
Data Condition
2020-01-01 0:00 2.0 False
2020-01-01 0:01 2.0 False
2020-01-01 0:02 732.1 True
2020-01-01 0:03 734.2 True
2020-01-01 0:04 733.3 True
2020-01-01 0:05 731.2 True
2020-01-01 0:06 2.0 False
2020-01-01 0:07 2.0 False
...
2020-06-15 23:52 2.0 False
2020-06-15 23:53 732.1 True
2020-06-15 23:54 734.2 True
2020-06-15 23:55 733.3 True
2020-06-15 23:56 731.2 True
2020-06-15 23:57 2.0 False
2020-06-15 23:58 2.0 False
2020-06-15 23:59 2.0 False
对于数据列,我的预期输出(窗口大小为 3)如下所示:
[2.0, 2.0, 733.15, 733.2, 732.9, 732.25, 2, 2, ..., 2.0, 733.15, 733.2, 732.9, 732.25, 2.0, 2.0, 2.0]。
所以本质上,对于每一行,它会取该行上方和下方的行的平均值,以及有问题的行,但总是排除错误时的数字。
这是我找到的一些代码,除了它不适用于当前的熊猫。
pandas.rolling_mean(df[df.Condition], window=30)
我在这里找到它:滚动条件均值
任何有关这方面的帮助或信息将不胜感激!
解决方案
我相信您会过滤数据框以仅获取符合您条件的行,然后应用滚动平均值。
df['rolling'] = df.loc[df['Condition'] == True]['Data'].rolling(30).mean().fillna(0)
推荐阅读
- magento - 访问当前的可配置产品配置
- reactjs - REACT/REDUX:如何将 Store 连接到 App 组件?
- regex - 正则表达式(PCRE)向前/向后包含以匹配结果
- sql - 查询每个产品的总价值
- django - 在视图中创建函数。“分配前参考”
- scala - 如何在 Spark 2.3.3 中使用 orc-core-1.5.5?
- api - 如何为所有 API 方法创建具有不同身份验证的路由
- google-cloud-firestore - Cloud Storage 是否与 Firestore 同步离线工作
- java - Android 上的 Appium : 断言对象属性 (focused, enabled, ...)
- sql - 如何在不使用 LAG 功能的情况下访问以前的记录