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

Pandas实现按列分组后删除不含指定值的整组数据

Pandas 分组筛选保留包含指定列值的全部分组

实现方案

核心逻辑是通过分组判断,直接过滤掉不满足「指定列包含目标值」条件的整组数据,全程保持原始表的列结构不变,无需手动拼接分组结果。

1. 高效写法(推荐,大数据量性能更优)

用groupby + transform生成和原表等长的布尔掩码,直接做行筛选,没有额外的索引对齐开销:

import pandas as pd

# 配置参数
target_value = "Pakistan"
group_col = "Column_to_Be_Grouped"
check_col = "search_value_per_group"

# 核心筛选代码
bool_mask = df.groupby(group_col)[check_col].transform(lambda s: target_value in s.values)
filtered_df = df[bool_mask].reset_index(drop=True)

2. 直观写法(小数据量可读性更好)

直接用groupby.filter逐组判断,符合逐组校验的思维逻辑:

filtered_df = df.groupby(group_col)\
                .filter(lambda group: target_value in group[check_col].values)\
                .reset_index(drop=True)

结果校验

针对描述的测试数据集:

  • 原始数据共16条记录,分为Ehsan、Irshad、Ayesha、Zohan4个分组
  • 筛选后共保留12条记录,剔除Irshad分组下的全部4条记录
  • 输出结果的列顺序、列名和原始DataFrame完全一致

避坑提示:不要用循环遍历每个分组再拼接结果的写法,不仅代码冗余,还容易出现索引错乱、类型转换异常的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:18:24