Python rolling计算“1”在过去3行中出现的次数

rolling() 是 Pandas 中用于移动窗口操作的强大函数,常用于:

  • 计算滚动平均、最大值、最小值、求和等
  • 时间序列平滑
  • 统计窗口内的自定义聚合
python 复制代码
df.rolling(window, min_periods=1).agg_func()

🎯 常见参数

参数 说明
window 滚动窗口大小(整数或时间窗口)
min_periods 最少有多少个非 NA 才计算结果(默认等于 window)
center 是否将窗口对齐中心(默认靠右)
win_type 滚动权重类型,如 boxcar、triang、gaussian(默认 None)

常见示例

📌 1. 计算滚动平均(window=3)

python 复制代码
import pandas as pd

s = pd.Series([1, 2, 3, 4, 5])

s.rolling(window=3).mean()

📌 2. 自定义滚动函数(如统计 "1" 出现次数)

python 复制代码
import pandas as pd

# 示例数据
df = pd.DataFrame({
    'flag': ['1', '0', '1', '1', '0', '1', '0', '0']
})

# 将 '1' 映射为整数 1,其他为 0
df['is_1'] = df['flag'].apply(lambda x: 1 if x == '1' else 0)

# 使用 rolling().sum() 计算过去3行中 '1' 的个数
df['count_last_3'] = df['is_1'].rolling(window=3, min_periods=1).sum()

print(df)
  • rolling(window=3):以当前行为结尾,向前看 3 行
  • min_periods=1:窗口最小长度为 1,防止前几行 NaN
  • sum():因为我们把 '1' 转成了数字 1

📌 3. 与时间序列结合

python 复制代码
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)

# 时间窗口滚动:过去7天内平均值
df['rolling_avg'] = df['value'].rolling('7D').mean()

✅ 常用聚合函数

函数 含义
.mean() 均值
.sum() 总和
.max() 最大值
.min() 最小值
.std() 标准差
.var() 方差
.count() 非 NA 个数
.apply(func) 自定义函数
相关推荐
代码山河2 小时前
Python就业方向全解析:后端、爬虫、数据分析、AI你选哪个?
python·学习·架构·教程·面向对象·项目
在世修行2 小时前
智学文枢:题目流水线
python·多线程·状态机·pyside
C^h2 小时前
c++ string
开发语言·c++
raindayinrain3 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
梯度下降者3 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
学逆向的3 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao3 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
学逆向的4 小时前
C 局部静态变量
c语言·开发语言·网络安全
大都督会赢的4 小时前
C++第一节课
开发语言·c++
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc