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

