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

使用groupby删除DataFrame中特定SCU_KEY对应所有行的方法咨询

Pandas 筛选历史有过采购记录的企业数据解决方案

实现方法1(性能最优,推荐)

直接使用groupby.transform实现单行过滤,无需额外拼接操作,保留所有符合条件企业的全部历史记录:

df_filtered = df_4[df_4.groupby('SCU_KEY')['REVENUE_STATUS_FLAG'].transform('sum') != 0]

原理:transform会将分组聚合后的结果映射回原DataFrame的每一行,筛选出分组求和结果不等于0的行,自动剔除所有从未有过采购记录的企业的全部数据,同时不会删除有采购记录企业的REVENUE_STATUS_FLAG=0的历史行,完全满足观测状态变化的需求。

实现方法2(lambda 分组过滤写法)

使用groupby.filter结合lambda函数实现:

df_filtered = df_4.groupby('SCU_KEY').filter(lambda x: x['REVENUE_STATUS_FLAG'].sum() != 0)

该写法逻辑更直观,但数据量较大时性能低于transform方法。

实现方法3(基于已计算的分组求和结果筛选)

如果已经运行过你编写的分组求和代码,可以基于求和结果二次筛选:

# 你的原有分组求和代码
sum_df = df_4.groupby('SCU_KEY')[['REVENUE_STATUS_FLAG']].sum().reset_index()
# 筛选出有过采购记录的SCU_KEY
valid_scu = sum_df[sum_df['REVENUE_STATUS_FLAG'] != 0]['SCU_KEY']
# 过滤原DataFrame
df_filtered = df_4[df_4['SCU_KEY'].isin(valid_scu)]

适合需要先查看各企业求和统计结果的场景。

内容的提问来源于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 03:24:02