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

Pandas如何计算分组内条件滚动/累积最大值 避免使用慢循环

Pandas条件滚动最大值向量化实现方案

核心实现代码

一行代码即可完成计算,全程无循环,为纯向量化操作:

df['condrolmax_calc'] = df.assign(temp=df['close'].where(df['bool'])).groupby((df['bool'] & ~df['bool'].shift(fill_value=False)).cumsum())['temp'].cummax()

实现原理解析

  1. 首先通过df['close'].where(df['bool'])生成临时序列:bool列为True时取对应close值,bool列为False时填充NaN,避免无效值参与最大值计算
  2. 生成分组键:(df['bool'] & ~df['bool'].shift(fill_value=False)).cumsum(),每次bool列从False切换为True时分组ID自增1,将连续True区间及后续跟随的False行划分到同一分组
  3. 按分组键分组后,对每个分组内的临时序列执行cummax累计最大值计算,自动跳过NaN值,实现遇到False后首个True自动重置最大值的需求

验证说明

执行上述代码后生成的计算结果与你提供的示例condrolmax列完全匹配,性能远高于自定义循环,可直接用于百万行级以上的数据集计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:27:03