Pandas满足条件时将当前行Group值设为上一行值+1的实现方法
Pandas 高效实现方案
完全不需要循环遍历行,用pandas内置的向量化累加方法就能一行代码实现需求,效率远高于循环,代码也更易读:
import pandas as pd # 假设你的DataFrame变量名为df df['Group'] = df['Condition'].cumsum() - 1
逻辑说明
- pandas会自动把布尔列的
True识别为1、False识别为0,cumsum()方法会对整列做累积求和:每遇到Condition=True就加1,遇到False就保持上一行的累积值,正好匹配你要求的「只有当前行Condition为True时Group递增,否则和上一行Group值一致」的逻辑。 - 末尾减1是适配你示例中第一个
Condition=True对应的Group初始值为0的要求。
性能对比
这种向量化操作的效率比手动循环高几个量级:如果你的DataFrame有10万行,循环可能需要几百毫秒,向量化操作只需要几毫秒,数据量越大优势越明显。
特殊场景兼容
如果你的数据可能出现首行Condition=False的情况,要求首行Group固定为0,可以用兼容写法:
df['Group'] = df['Condition'].cumsum() - (1 if df.iloc[0]['Condition'] else 0)
内容的提问来源于stack exchange,提问作者thshea
相关产品推荐
相关产品推荐

