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

Python遍历DataFrame列统计category变量值计数报TypeError如何解决

问题原因

你遇到的报错是因为当遍历到非category类型(比如int64类型的列)时,直接用列的dtype和字符串'category'做相等判断,低版本Pandas/Numpy无法识别这种跨类型的比较逻辑,因此抛出类型错误。首个category列能正常输出,是因为第一列恰好是category类型,第一次判断没触发异常,遍历到第二个int类型列时才报错。

解决方案

方案1(最稳妥,兼容性最高)

使用Pandas内置的专门类型判断接口,完全避免跨类型比较报错:

import pandas as pd

for col in creditData.columns:
    if pd.api.types.is_categorical_dtype(creditData[col]):
        print(f"===== {col} 取值统计 =====")
        print(creditData[col].value_counts())
        print("-"*30)

方案2(更简洁,无需手动写循环)

直接筛选所有分类类型列后批量统计,更符合Pandas最佳实践:

# 输出结果为每个分类列的唯一值计数
creditData.select_dtypes(include='category').apply(pd.Series.value_counts)

方案3(最小改动最小,仅修改原判断逻辑)

对比dtype的name属性做比较,也能避免报错:

for col in creditData.columns:
    if creditData[col].dtype.name == 'category':
        print(creditData[col].value_counts())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:18:02