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

pandas DataFrame批量删除多组指定行区间仅第一组生效问题咨询

问题根因

你定义的spurs区间是基于原始未修改的DataFrame行位置下标,第一次执行删除操作后,full_path的总行数减少了62-16=46行,第一次删除位置之后的所有行整体向前偏移了46个位置。此时你再用原始的(72,83)下标去切已经变短的新DataFrame的索引,要么区间超出当前表的最大行号、要么切到完全不相关的行,自然无法删除目标区间。单独删除第二个区间可以生效,是因为此时表还是原始长度,下标和目标行对应关系正确。

解决方法

有两种常用的无坑实现方式:

  • 方案1:倒序遍历删除区间
    优先删除位置靠后的区间,不会影响靠前区间的下标对应关系,代码实现如下:
spurs = [(16, 62), (72, 83)]
# 按区间起始位置倒序排序,先删靠后的行
for start, end in sorted(spurs, key=lambda x: x[0], reverse=True):
    full_path.drop(full_path.index[start:end], inplace=True)
  • 方案2:一次性收集所有待删除索引后批量删除
    全程基于原始表的行位置收集待删除的索引值,完全不会出现下标偏移问题,效率也更高,代码实现如下:
spurs = [(16, 62), (72, 83)]
to_drop = []
for start, end in spurs:
    to_drop.extend(full_path.index[start:end])
full_path.drop(to_drop, inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:36:02