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

如何从多列分组的Pandas GroupBy对象中选择指定分组?

解决Pandas多列分组后仅按部分键筛选的问题

当你已经用['A','B']分组得到g_df后,直接用get_group没法只传单个B键值——因为分组的键是**(A,B)的组合对**,get_group必须接收完整的组合键才会生效。不过可以通过以下方法实现需求:

方法1:筛选目标分组键后合并

先从g_df.groups里找出所有B值为目标值的分组键,再逐个获取分组并合并:

import pandas as pd

# 假设已经有分组好的g_df
target_b = 'B Key'
# 筛选出所有B等于target_b的分组键
valid_keys = [key for key in g_df.groups if key[1] == target_b]
# 合并这些分组
filtered_df = pd.concat([g_df.get_group(k) for k in valid_keys])

方法2:利用GroupBy的filter方法

如果只是要过滤出符合B条件的行,也可以直接用filter方法,更简洁:

filtered_df = g_df.filter(lambda x: x['B'].iloc[0] == 'B Key')

这里lambda里的x是每个分组的子DataFrame,因为每个分组里的B值都是相同的(毕竟是按B分组的),所以取第一个值判断就行。

为什么你之前的尝试失败?

  • g_df.get_group((tuple(g_df['A'].unique()),'B Key')):分组键是单个(A,B)对,不是A的所有值的集合,这个组合不存在,所以报KeyError。
  • g_df.get_group(,'B Key')):语法错误,Python不允许元组里只写后半部分,必须提供完整的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:52:04