Pandas无需循环将≥99后差值≤1行的AboveOrEqual99列设为True
实现方案
采用pandas向量化分组运算完成需求,无显式for循环,适合大数据量场景,执行后结果和你给出的预期AboveOrEqual99result完全匹配。
完整代码
import pandas as pd # 1. 标记分组边界:遇到初始True或者差值绝对值大于1时开启新分组 df['group'] = (df['AboveOrEqual99'] | (df['PercentageDiff'].abs() > 1)).cumsum() # 2. 分组继承首行状态:首行是True的分组整组都标为True df['AboveOrEqual99'] = df.groupby('group')['AboveOrEqual99'].transform('first') # 清理临时生成的分组列 df.drop('group', axis=1, inplace=True)
逻辑说明
- 分组规则会把所有「前序触发过True且后续差值绝对值≤1」的连续行归为同一组
- 差值绝对值大于1时自动开启新分组,不会传递前序的True状态,避免误匹配你提到的24、25、25这类不符合要求的序列
内容的提问来源于stack exchange,提问作者Manuel
相关产品推荐
相关产品推荐

