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

如何使用pandas快速计算滑动窗口内指定值的占比

解决方案

你可以直接使用pandas的向量化滑动窗口运算实现,相比手写for循环效率提升非常显著,仅需一行代码即可完成需求:

df['perc_norm'] = df['error_code'].eq(255).rolling(wndw_size, min_periods=1).mean()

代码逻辑说明

  • df['error_code'].eq(255):生成布尔序列,error_code等于255的位置为True(数值运算中等价于1),其余为False(等价于0)
  • rolling(wndw_size, min_periods=1):创建滑动窗口对象,第二个参数min_periods=1刚好匹配你原逻辑的边界处理规则:当剩余数据不足窗口大小时,使用现有所有数据计算,无需等窗口填满
  • mean():对窗口内的数值求平均,计算结果恰好等于窗口内255的数量除以窗口总长度,也就是你需要的占比

效率优势说明

你原有的for循环是Python层的逐行迭代,每次都要做切片、条件筛选、计数操作,在数据量较大、窗口尺寸较大的场景下运行会非常慢。而pandas的rolling相关运算基于Cython实现底层逻辑,属于向量化运算,运行效率远高于手写Python循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:45:03