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

pandas dataframe存在多个空值时删除行出现AttributeError如何解决

报错原因

你在调用df.drop()方法时指定了inplace = True参数,该参数开启后,drop会直接修改原DataFrame对象,返回值固定为None。你将返回的None赋值给了df变量,下一轮循环需要读取df.index属性时,df已经是无属性的空类型,因此触发AttributeError。
另外你原有代码还有一处逻辑漏洞:删除行之后直接执行i += 1,会跳过紧邻被删行之后的下一行(删除索引为i的行后,原索引i+1的行自动前移到索引i的位置,直接加i会直接判断原i+2的行),需要补充跳过i自增的逻辑。

可用修复代码(完全保留你的遍历逻辑)
import pandas as pd

df = pd.read_csv('data/mycsv.csv')

i = 0
while i < len(df.index):
    if df.iloc[i].isnull().sum() > 3:
        # 去掉inplace参数,接收drop返回的新DataFrame
        df = df.drop(df.index[i])
        # 删行后不递增i,避免跳过下一行
        continue
    i += 1
更简洁的原生实现(可选)

pandas内置的dropna方法可以直接实现按空值数量删行的需求,无需手动遍历:

# thresh参数指定一行最少需要有多少个非空值才保留,总列数-3即最多允许3个空值
df = df.dropna(thresh=df.shape[1] - 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:06:03