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

如何通过Pandas groupby.apply()获取第i组对应的DataFrame?

获取Pandas Groupby后的指定组DataFrame

你不需要用apply()来提取单组数据,直接对GroupBy对象操作就可以,下面是两种实用方法:

方法一:将GroupBy对象转为列表,通过索引提取

GroupBy对象可以直接转成列表,列表里的每个元素是**(组标签, 对应DataFrame)**的元组,通过索引就能拿到目标组的DataFrame:

import pandas as pd
dat = pd.DataFrame({'name' : ['A', 'C', 'A', 'B', 'C'], 'val' : [1,2,1,2,4]})

# 创建GroupBy对象
grouped = dat.groupby('name')
# 转为列表格式
group_list = list(grouped)

# 取第1组(索引从0开始)的DataFrame
first_group_df = group_list[0][1]
print(first_group_df)

输出结果:

name  val
0    A    1
2    A    1

方法二:用get_group()方法精准提取

如果知道目标组的标签名,直接用get_group()最方便;如果只知道组的位置,先获取组标签列表再提取:

# 已知组名时直接提取
group_a_df = grouped.get_group('A')
print(group_a_df)

# 仅知道组位置时,先获取所有组标签
group_labels = list(grouped.groups.keys())
# 取第2组(索引1)的DataFrame
second_group_df = grouped.get_group(group_labels[1])
print(second_group_df)

第二组的输出结果:

name  val
1    C    2
4    C    4

补充说明:你之前用groupby('name').apply(lambda x: x)返回原DataFrame,是因为apply默认会把各组的处理结果拼接回原数据结构,这不是提取单组的正确用法,上面的方法更高效直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:35:45