Pandas中value_counts()报错:遍历列统计值触发AttributeError问题排查
问题排查与代码修正
嘿,这个错误的根源很好找!你在循环里写的train.columns[x]拿到的是列的名称(字符串类型),而value_counts()是Pandas Series专属的统计方法——字符串对象自然没有这个属性,所以才会抛出AttributeError。
为什么会这样?
train.columns返回的是一个包含所有列名的索引对象,每个元素都是列的名字(比如"user_id"、"category"这类字符串)。你直接对这个字符串调用value_counts(),Python当然会告诉你“字符串没这方法”啦。
修正后的代码(两种可选)
方法1:直接遍历列(更简洁推荐)
for col in train.columns: print(f"=== 列名: {col} ===") print(train[col].value_counts()) print("\n")
方法2:保留索引遍历的写法(定位到对应列的Series)
for x in range(len(train.columns)): col_name = train.columns[x] print(f"=== 列名: {col_name} ===") print(train[col_name].value_counts()) print("\n")
额外小提示
如果你只是想单独查看第79列的value_counts(注意Pandas索引从0开始,第79列的索引是78),不用写循环,直接这样更高效:
# 通过位置索引取第79列 train.iloc[:, 78].value_counts() # 或者知道列名的话直接用列名 # train['你的第79列列名'].value_counts()
内容的提问来源于stack exchange,提问作者Anesh
相关产品推荐
相关产品推荐

