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

pandas DataFrame按两列分组无需执行汇总聚合的实现方法

pandas返回的DataFrameGroupBy对象本身就已经完成了按year和state的分组逻辑,不需要强制调用聚合方法就能直接用于后续操作,你可以根据使用场景选择以下处理方式:

  • 直接迭代GroupBy对象遍历每个分组
    如果你需要逐个处理每个(year, state)组合的子数据集,直接遍历GroupBy对象即可,每次迭代会返回(分组键, 组内DataFrame)的元组:

    grouped = df.groupby(['Year', 'State'])
    # 遍历所有分组做统计检验、绘图等操作
    for (year, state), group_df in grouped:
        # 此处添加你的分组处理逻辑
        print(f"年份{year},州{state}的数据集行数:{len(group_df)}")
    
  • 拆分成分组字典方便按键查询
    如果你需要随时调取指定(year, state)组合的数据集,可以把GroupBy对象转成字典:

    group_dict = dict(df.groupby(['Year', 'State']))
    # 示例:调取2020年加利福尼亚州的对应数据
    ca_2020_df = group_dict[(2020, 'California')]
    
  • 给原数据打分组标记
    如果你不需要拆分子集,只是需要在原数据上区分不同分组,可以用ngroup()方法生成分组ID,相同year和state的行会被分配同一个ID:

    df['group_id'] = df.groupby(['Year', 'State']).ngroup()
    
  • 展开为按分组排列的完整DataFrame
    如果你需要得到分组后不聚合的完整DataFrame,只需要调用apply直接返回分组本身即可:

    # pandas 1.3+版本可添加group_keys=False避免额外生成分组索引列
    grouped_df = df.groupby(['Year', 'State'], group_keys=False).apply(lambda x: x)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:05