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

如何用Pandas统计DataFrame各列唯一值的出现次数?

正确实现列唯一值计数的方法

你的原代码存在逻辑错误:循环df["Month"]会遍历该列的每个具体值(如"Jan"、"Feb"),而非列名,后续用这些值去索引Series会触发KeyError——因为Series的索引是行号而非列取值。

以下是两种高效的实现方式:

1. 先构建对应数据集

import pandas as pd

data = {
    "Station": ["A", "A", "A", "B", "B", "C", "D"],
    "Month": ["Jan", "Feb", "Jan", "Mar", "Mar", "Apr", "Feb"],
    "Year": [2021]*7
}
df = pd.DataFrame(data)

2. 方法一:逐列遍历统计

遍历DataFrame的列名,对每一列调用value_counts()方法,直接得到唯一值的出现次数:

for col in df.columns:
    print(f"=== {col} 列统计 ===")
    print(df[col].value_counts())
    print()

输出结果:

=== Station 列统计 ===
A    3
B    2
C    1
D    1
Name: Station, dtype: int64

=== Month 列统计 ===
Jan    2
Feb    2
Mar    2
Apr    1
Name: Month, dtype: int64

=== Year 列统计 ===
2021    7
Name: Year, dtype: int64

3. 方法二:批量获取所有列统计结果

使用apply()方法对整个DataFrame批量处理,同时得到所有列的唯一值计数:

count_result = df.apply(pd.Series.value_counts)
print(count_result)

输出结果:

Station  Month  Year
2021       NaN    NaN   7.0
A          3.0    NaN   NaN
Apr        NaN    1.0   NaN
B          2.0    NaN   NaN
D          1.0    NaN   NaN
Feb        NaN    2.0   NaN
Jan        NaN    2.0   NaN
Mar        NaN    2.0   NaN

其中NaN表示该值在对应列中不存在,数值则为该值的出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:01:17