You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言按设备分组实现7天滚动窗口problem=1计数的方法问询

你可以直接用Pandas内置的分组滚动计算功能实现需求,是原生向量化操作,性能远高于自定义循环,即使处理百万级行数据也非常高效。

完整实现代码如下:

import pandas as pd

# 示例数据构造,实际使用时替换为你自己的DataFrame即可
data = {
    'day': ['2021-01-01','2021-01-02','2021-01-03','2021-01-04','2021-01-05','2021-01-06','2021-01-07','2021-01-08','2021-01-09','2021-01-10',
            '2021-01-01','2021-01-02','2021-01-03','2021-01-04','2021-01-05','2021-01-06','2021-01-07','2021-01-08','2021-01-09','2021-01-10'],
    'device': ['A']*10 + ['B']*10,
    'problem': [0,1,1,0,0,1,1,1,0,1,1,1,1,1,0,0,1,0,1,0]
}
df = pd.DataFrame(data)
df['day'] = pd.to_datetime(df['day'])

# 核心计算逻辑
# 先按设备+日期排序,避免数据乱序导致计算错误
df = df.sort_values(by=['device', 'day']).reset_index(drop=True)
# 按设备分组后做7行滚动求和,不满7行自动返回NaN
df['problem_count'] = df.groupby('device')['problem']\
    .rolling(window=7, min_periods=7)\
    .sum()\
    .reset_index(level=0, drop=True)

# 输出结果和你要求的格式完全一致
print(df)

核心参数说明:

  • window=7:指定滚动窗口为7行,匹配你要统计7条数据的需求
  • min_periods=7:要求窗口内最少有7个有效值才返回计算结果,前6行不满7行自动返回NaN,符合你的输出要求
  • 分组逻辑保证不同设备的滚动计算完全独立,不会互相干扰

内容的提问来源于stack exchange,提问作者dloudtrain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 05:06:03