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

如何在Pandas滚动窗口中按条件筛选行并进行计数?

Pandas滚动窗口统计满足指定条件的行数

要实现滚动窗口内仅统计controlled列为True的行数,核心思路是将布尔值转换为可累加的数值,再通过滚动求和完成计数,具体操作如下:

  • 将controlled列的布尔值转为整数(True对应1,False对应0),滚动窗口内的求和结果即为满足条件的行数
  • 使用rolling().sum()替代原有的rolling().count(),直接对转换后的数值列进行滚动求和

修改后的代码示例

替换你原代码中计算rolling_obs_count的行,新增统计满足条件行数的列:

# 新增统计controlled=True行数的滚动窗口列
df['rolling_controlled_count'] = df['controlled'].astype(int).rolling(window='1s').sum()

效果验证

以你提供的前5行数据为例:

2020-01-01 00:00:00.048713 1.024082 4.491483 True 1.0
2020-01-01 00:00:00.068628 1.084577 0.773474 True 2.0
2020-01-01 00:00:00.202953 1.091360 0.584872 True 3.0
2020-01-01 00:00:00.425483 1.125268 2.361184 False 4.0
2020-01-01 00:00:00.665378 1.127335 2.050226 True 5.0

对应的rolling_controlled_count列值会是:1.0、2.0、3.0、3.0、4.0,准确统计了每个1秒窗口内controlled=True的行数。

性能说明

这种方法比使用rolling().apply(lambda x: x.sum())效率更高,因为sum是Pandas优化过的向量化操作,避免了逐窗口的Python级循环,在大数据集上优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:45:44