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

在Pandas DataFrame删除操作中触发KeyError:我哪里出错了?

移除DataFrame中Sentences列长度超40行的正确实现

错误原因

你写的代码里,len(df.Sentences)是计算整个列的总行数,不是每行文本的字符长度。这会得到一个单一布尔值(比如总行数大于40时返回True),用这个值去索引DataFrame就会触发KeyError: True。

正确写法

方法1:布尔掩码过滤(最常用)

直接筛选出长度≤40的行,等价于移除超40的行:

df = df[df['Sentences'].str.len() <= 40]

如果一定要用drop方法:

df = df.drop(df[df['Sentences'].str.len() > 40].index)

方法2:用query简化代码

df = df.query('Sentences.str.len() <= 40')

特殊情况处理

如果Sentences列存在空值(NaN),str.len()会返回NaN,导致空值行被过滤。如果要保留空值行,需要额外判断:

df = df[(df['Sentences'].str.len() <= 40) | df['Sentences'].isna()]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:04:54