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

Pandas如何按单列分组后展开分类唯一值并聚合统计计数

实现方案

要得到按score分组、各type值拆分为独立列统计频次的结果,不需要写复杂的自定义聚合逻辑,pandas有原生方法可以直接实现。

方法1:crosstab(推荐,写法最简洁)

pd.crosstab是专门用于统计两个维度交叉频次的内置函数,默认逻辑完全匹配需求:

import pandas as pd

# df为你的原始数据集
result = pd.crosstab(index=df['score'], columns=df['type']).reset_index()

运行后会自动提取type列的所有唯一值作为单独列,单元格值为对应score、type组合的出现次数,无匹配数据的位置默认填充0,输出格式和你给出的目标结构完全一致。

方法2:groupby + unstack

如果习惯用groupby的操作逻辑,可以先按两个维度分组计数,再将type维度从行索引展开为列:

result = df.groupby(['score', 'type'])
          .size()
          .unstack(fill_value=0)
          .reset_index()

参数fill_value=0的作用是将不存在对应type的分组计数补为0,避免结果中出现空值。

之前结果不符合预期的原因

你之前的groupby操作仅以score作为唯一分组键,统计的是每个score分组下的总记录数,没有将type纳入分组维度,因此无法拆分出各type对应的独立统计列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:12:21