如何在Pandas DataFrame中删除行?使用iloc删前两行失败求助
问题原因及解决方法
错误原因
你删除行的代码无效,是因为drop方法在指定axis=0(操作行)时,需要传入行的索引值,而不是直接传入行对应的子DataFrame(benz1.iloc[0:1,:]返回的是行数据)。另外你代码里写的0:1其实只选中了第1行(索引0),和你想删除前两行的需求也不匹配。
正确解决方法
这里提供两种简单有效的方式:
方法1:直接用iloc切片(推荐)
直接跳过前两行,取从第3行开始的所有数据,这是最直观高效的方式:
benz2 = benz1.iloc[2:] # 索引从2开始,对应原数据的第3行,自动跳过前两行
方法2:用drop配合行索引
如果一定要使用drop方法,先获取前两行的索引,再传入drop:
# 获取前两行的索引,传入drop删除 benz2 = benz1.drop(benz1.index[:2], axis=0)
补充说明
- 如果你只是想删除前两行,方法1的切片操作比
drop更简洁,性能也更好。 - 注意
iloc是按位置索引,0:2代表取位置0和1的行(前两行),所以iloc[2:]就是从位置2开始到末尾的所有行。
内容的提问来源于stack exchange,提问作者Kiran Nyaupane
相关产品推荐
相关产品推荐

