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

Pandas统计各列中?值数量报错:AttributeError: 'DataFrame'无属性'i'

解决方法

首先,你第一个错误确实出在data.i这里——Python会把i当成DataFrame的固定属性名,而不是循环里的变量,所以必须用data[i]来通过变量名索引列。

但改了data[i]还报错的话,大概率是因为某些列里根本没有?,直接用value_counts()["?"]会触发KeyError(因为这个键不存在)。解决这个问题的关键是用字典的get()方法,当找不到?时返回0,避免报错。

修正后的代码如下:

colnames = ['col_1','col_2','col_3']

for i in colnames:
    count = data[i].value_counts().get("?", 0)
    print(f'In the {i} feature, the value - ? - occurs {count} times')

另外,如果你想一次性统计所有列的?数量,不用循环也能实现,效率更高:

# 统计每列中?的数量
question_mark_counts = (data == "?").sum()
# 打印结果
for col, count in question_mark_counts.items():
    print(f'In the {col} feature, the value - ? - occurs {count} times')

这个方法是先把整个DataFrame转换成布尔值(等于?的为True),再对每列求和(True会被当成1计算),比循环调用value_counts更高效,尤其是数据量大的时候。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:45:47