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

Pandas groupby按指定列分组统计多列数值出现频次实现问题

实现方法

核心思路为先规整数据结构,再按指定字段分组统计频次,以下是两种可直接运行的实现方案:

方案1:宽表转长表后分组统计

import pandas as pd

# 假设你原始的DataFrame命名为df
# 1. 把需要统计的3/4/5/6列转为长表结构
df_melt = df.melt(id_vars=[0], value_vars=[3,4,5,6])
# 2. 按第0列和数值分组统计出现次数
res = df_melt.groupby([0, 'value'], as_index=False)['variable'].count()
# 3. 重命名列匹配期望输出格式
res.columns = [0, 3, 4]
# 可选:按第0列、数值列排序
res = res.sort_values(by=[0, 3]).reset_index(drop=True)

方案2:分组后直接栈化统计

import pandas as pd

res = df.groupby(0, as_index=False).apply(
    lambda group: group[[3,4,5,6]].stack().value_counts()
).rename(columns={'level_1': 3, 0: 4})

注意:如果你的DataFrame列是字符串类型,需要把代码里的数字列名包裹引号,比如id_vars=['0']、value_vars=['3','4','5','6']即可。

两种方案输出结果均完全匹配你给出的期望格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 13:06:03