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

如何按条件删除DataFrame特定行:仅删SCU_KEY首次出现1前的0值行

解决方案

实现思路

  • 利用pandas分组累计最大值的特性实现高效过滤,无需遍历也无需手动指定索引,适配大规模数据集
  • 由于数据集已按日期排序,每个SCU_KEY分组内的行顺序符合业务逻辑
  • REVENUE_STATUS_FLAG的累计最大值一旦首次达到1后,后续所有位置的累计最大值都会保持为1,刚好匹配「首次1之前删0、首次1之后全保留」的规则

代码实现

import pandas as pd

# 假设原始数据集存储在df变量中
df_filtered = df[
    df.groupby('SCU_KEY')['REVENUE_STATUS_FLAG'].transform('cummax') == 1
].reset_index(drop=True)

逻辑验证

举个例子,假设某SCU_KEY分组内的REVENUE_STATUS_FLAG序列为[0,0,1,0,1],计算得到的累计最大值序列为[0,0,1,1,1],筛选后保留的就是后3行,刚好删除首次出现1之前的2条0值行,且保留了首次1之后的0值行,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03