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

如何对DataFrame多列取值进行汇总统计生成频率表

实现方案

我们可以通过Python的pandas库快速完成这个频率统计需求,以下是两种可直接运行的实现方式:


方法1:逐列统计后转置(最简洁)

对每列单独统计各个值的出现次数,转置后补全缺失值即可得到目标结果,不需要手动指定统计维度,会自动识别所有出现过的分类值。

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame(
    data=[
        ["A", "B", "A", "B", "A"],
        ["C", "B", "B", "B", "B"],
        ["A", "C", "A", "B", "B"]
    ],
    columns=[1,2,3,4,5]
)

# 统计实现
result = df.apply(pd.Series.value_counts).T.fillna(0).astype(int)
print(result)

方法2:长宽表转换后交叉统计(逻辑更清晰)

先把宽表转为「列名-值」结构的长表,再用交叉表统计频率,适合需要中间过程做额外处理的场景。

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame(
    data=[
        ["A", "B", "A", "B", "A"],
        ["C", "B", "B", "B", "B"],
        ["A", "C", "A", "B", "B"]
    ],
    columns=[1,2,3,4,5]
)

# 转长表
melt_df = df.melt(var_name='原始列', value_name='统计值')
# 交叉统计频率
result = pd.crosstab(melt_df['原始列'], melt_df['统计值'])
print(result)

两种方法输出的结果完全符合需求:

A  B  C
1  2  0  1
2  0  2  1
3  2  1  0
4  0  3  0
5  1  2  0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:30:02