Jupyter Notebook中pandas执行drop操作报NameError问题求助
报错原因
- 直接触发
NameError: name 'data' is not defined的原因是Jupyter Notebook单元格执行顺序错误:运行data.drop[:"peshawar",:"pop"]所在单元格时,还未运行上方定义data变量的代码单元格,Python解释器未在内存中找到对应变量,因此抛出未定义报错。 - 除此之外你的
drop调用本身存在多处语法错误,即使data定义完成也会触发其他报错:drop是DataFrame的内置方法,调用时需使用圆括号()而非方括号[]- pandas的行索引大小写敏感,你定义的行索引为首字母大写的
Peshawar,代码中写的全小写peshawar无法匹配到对应行 - 切片语法不符合
drop的传参要求,drop需要通过index、columns参数明确指定要删除的行/列范围,不能直接在方括号内写切片
解决方案
- 先解决变量未定义问题:按代码顺序从上到下依次执行所有单元格,先运行导入pandas、定义Series、生成
data对象的代码,可单独运行data所在单元格确认表格正常输出,保证data变量已被成功创建。 - 修正
drop方法的语法,根据你的删除需求可以选择对应写法:
- 若要删除单独的
Peshawar行和pop列:
# drop默认不修改原对象,需赋值回原变量或加inplace=True参数 data = data.drop(index='Peshawar', columns='pop')
- 若要删除从开头到
Peshawar的所有行、从开头到pop的所有列:
data = data.drop( index=data.loc[:'Peshawar'].index, columns=data.loc[:,:'pop'].columns )
内容的提问来源于stack exchange,提问作者Sajid Iqbal
相关产品推荐
相关产品推荐

