如何使用Pandas的get_group获取除指定分组外的所有分组数据
pandas反向选取分组的实现方法
pandas 内置的 get_group 方法仅支持选取指定分组的内容,没有直接提供反选分组的参数,你可以通过以下几种方式实现需求:
- 方法1:遍历分组键排除目标值后拼接
如果你已经完成了分组操作,可以直接遍历分组的键值,排除不需要的分组后合并结果,示例代码如下:
import pandas as pd # 示例数据 df = pd.DataFrame({ "category": ["A", "B", "C", "A", "B", "C"], "value": [1, 2, 3, 4, 5, 6] }) # 已创建的分组对象 gb = df.groupby("category") # 要排除的分组值 exclude_key = "A" # 筛选出除exclude_key外的所有分组并合并 result = pd.concat( [gb.get_group(key) for key in gb.groups if key != exclude_key], ignore_index=True )
- 方法2:使用
filter方法直接过滤分组
基于分组对象的filter方法可以更简洁的实现需求,无需手动遍历拼接:
# 接上面的示例变量 result = gb.filter(lambda g: g.name != exclude_key)
- 方法3:分组前预先过滤(性能最优)
如果还未创建分组对象,直接先过滤原DataFrame再做后续操作即可,逻辑更直观,性能也更高:
# 排除单个分组 result = df[df["category"] != exclude_key] # 排除多个分组可使用isin判断 result = df[~df["category"].isin(["A", "B"])]
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

