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
相关产品推荐
相关产品推荐

