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

Pandas执行groupby后返回原DataFrame未分组是什么原因

核心问题说明

groupby方法本身没有问题,你的误解主要在groupby的返回值和head()方法的作用上:

  • df.groupby(['day','time'])不会直接生成重排或聚合后的DataFrame,它返回的是pandas GroupBy分组对象,仅存储了分组的映射规则,需要搭配聚合、转换、过滤类操作才能输出处理后的DataFrame结果。
  • GroupBy对象调用head()方法,默认返回每个分组的前5条数据,会将所有分组的前5条拼接为新的DataFrame返回,并非返回原始未分组数据,只是你当前的分组数量少、每个分组样本量大于5,所以拼接结果看起来和原始数据结构接近,不代表分组未生效。

常见分组后操作示例

你可以根据需求选择分组后的处理逻辑:

  1. 查看分组映射规则,确认分组逻辑生效
df_1 = df.groupby(['day','time'])
# 输出每个分组对应的行索引列表
print(df_1.groups)
  1. 对分组做聚合计算,输出聚合后的结果表
# 计算每个(day,time)分组的总账单均值、小费总和
res = df.groupby(['day','time']).agg(
    avg_total_bill=('total_bill', 'mean'),
    sum_tip=('tip', 'sum')
).reset_index()
  1. 提取每个分组的前N条数据,可通过调整N验证分组效果
# 每个分组仅返回前1条,总行数等于分组数量,可直观看出分组结果
df.groupby(['day','time']).head(1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:54:03