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

如何基于另一列的条件删除DataFrame中的指定分组?

筛选存在C列值大于3的B列分组

要实现删除所有C列值均小于3的B列分组,仅保留存在C列值大于3的分组,可以用以下两种简洁的方法:

方法一:使用groupby.filter(推荐)

直接对分组应用筛选逻辑,保留符合条件的分组所有记录:

df_clean = df.groupby('B').filter(lambda group: (group['C'] > 3).any())

逻辑说明:

  • groupby('B')按B列完成分组
  • filter函数遍历每个分组,通过(group['C'] > 3).any()判断该分组中是否至少有一个C值大于3
  • 最终返回所有满足条件的分组的完整数据

方法二:先提取有效B值再筛选

如果需要单独获取有效分组的B值,再对原数据进行筛选:

# 获取所有存在C>3的B值
valid_groups = df.groupby('B').filter(lambda g: (g['C'] > 3).any())['B'].unique()
# 筛选原DataFrame中属于有效分组的记录
df_clean = df[df['B'].isin(valid_groups)]

对您伪代码的补充说明:

您最初写的df.groupby('B')['C'] < 3.0仅能生成每个元素的布尔判断结果,无法完成分组级别的筛选,需要借助filter或先提取有效分组的方式实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:18:33