使用Python DataFrame的drop方法时触发KeyError的原因排查
错误原因及解决办法
你的代码报错的核心问题是错误计算了每行拆分后的元素数量:
len(df['subjects'].str.split())计算的是整个Series的总行数,不是每行拆分后的元素个数。这个结果是一个单一整数,和3比较后得到的是一个布尔值(比如True或False),用这个布尔值去索引DataFrame时,会因为找不到对应索引标签而触发KeyError。
要获取每行拆分后的元素数量,应该用Pandas的str.len()方法,它会对Series里的每个列表元素计算长度。修正后的代码如下:
# 方法1:用drop删除行 df.drop(df[df['subjects'].str.split().str.len() < 3].index, inplace=True) # 方法2:更直观的布尔索引筛选(推荐) df = df[df['subjects'].str.split().str.len() >= 3]
内容的提问来源于stack exchange,提问作者juan
相关产品推荐
相关产品推荐

