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

如何在Pandas中按一列分组统计另一列唯一值的频率?

解决方案

方法1:用pd.crosstab快速生成(推荐)

这是最简洁的方式,直接按Time和Type做交叉统计,自动生成目标格式的统计表:

import pandas as pd

# 假设你的数据存储在DataFrame df中
result = pd.crosstab(df['Time'], df['Type'])

执行后result就是你需要的频率统计表:行是唯一的Time值,列是所有Type的唯一值,单元格对应组合的出现次数,缺失的组合会自动填充为0。

方法2:用groupby + unstack实现

如果要沿用你提到的groupby思路,可按以下步骤操作:

  1. 按Time和Type分组,统计每组的数量
  2. 将Type从行索引转换为列(unstack操作)
  3. 把空值(NaN)填充为0,确保所有Type列都存在
# 分组计数
grouped = df.groupby(['Time', 'Type']).size().reset_index(name='Count')
# 转换为宽表格式
result = grouped.pivot(index='Time', columns='Type', values='Count').fillna(0).astype(int)

两种方法都能生成你截图右侧的样式,方法1更简洁高效,适合大多数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:00:49