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

如何按行统计Pandas DataFrame中各分值的出现频率?

按行统计用户得分频率的解决方案

直接用Pandas的apply结合value_counts就能实现需求,代码简洁高效,适配你100列的场景:

import pandas as pd

# 你的原始数据
df1 = pd.DataFrame({'User': ['user_a', 'user_b', 'user_c'], 
                    'Cat1_score': [0, 5, 3], 
                    'Cat2_score': [0, 2, 5], 
                    'Cat3_score': [4, 5, 1]})

# 1. 分离用户列和得分列
score_cols = df1.drop('User', axis=1)

# 2. 对每行统计0-5的出现次数,缺失分值补0
counts = score_cols.apply(
    lambda row: row.value_counts().reindex(range(6), fill_value=0),
    axis=1
)

# 3. 把数字列名改成对应的英文名称
counts.columns = ['zero', 'one', 'two', 'three', 'four', 'five']

# 4. 把用户列插回结果的第一列
result = counts.copy()
result.insert(0, 'User', df1['User'])

print(result)

运行后输出的结果完全匹配你想要的df2格式,可直接和其他用户表关联,也能通过result.to_excel('得分统计.xlsx')导出到Excel。

关键步骤说明:

  • 用drop分离得分列,避免用户名字段干扰统计逻辑
  • apply(axis=1)指定按行处理,value_counts()自动统计每行的分值出现频率
  • reindex(range(6), fill_value=0)确保0到5每个分值都有统计项,未出现的分值填0,保证结果列的完整性
  • 最后插回用户列,让结果格式满足关联、导出的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:22:50