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

Pandas分组聚合后DataFrame显两列但shape仅返回1列问题

分组聚合后索引转列的解决方法

原DataFrame包含release_year和rating两列,想要计算每年的平均rating并返回一个两列的DataFrame,但执行以下代码后:

df = df.groupby('release_year')['rating'].mean()
new_df = pd.DataFrame(df)

得到的结果中release_year是DataFrame的索引而非列,调用new_df.shape返回(86, 1),不符合预期。

两种解决方法:

  • 方法一:分组时直接设置不将分组键作为索引
    在groupby中添加as_index=False参数,聚合后直接得到包含两列的DataFrame:

    df = df.groupby('release_year', as_index=False)['rating'].mean()
    
  • 方法二:聚合后将索引转为列
    对聚合结果调用reset_index(),把原索引release_year转为普通列:

    df = df.groupby('release_year')['rating'].mean().reset_index()
    # 这里不需要再用pd.DataFrame()转换,df已经是两列的DataFrame了
    

原因说明:

groupby默认会把分组字段(这里是release_year)设置为结果的索引,所以原始代码中聚合后得到的是一个以release_year为索引的Series,转为DataFrame后只有rating一列,因此shape显示为1列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:35:19