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

如何从Pandas DataFrame中删除指定范围的行?

解决DataFrame循环删除行时的索引越界问题

问题原因

你遇到的IndexError是因为正向循环删除行时,DataFrame的长度会逐次缩短:每删除一行,后续行的实际位置会前移,而你仍用原始的irange中的索引值去定位,当索引值超过当前DataFrame的有效行数时,就会触发越界错误。

解决方案

方法1:反向循环删除

从后往前遍历要删除的位置,这样删除后面的行不会影响前面行的位置索引,避免越界:

for i in sorted(irange, reverse=True):
    df.drop(df.iloc[i].name, inplace=True)

方法2:批量删除(推荐,更高效)

Pandas支持批量操作,无需循环,直接一次性删除目标行,这是更符合Pandas设计理念的做法:

# 方式1:先获取要删除的行索引,再批量删除
rows_to_drop = df.iloc[irange].index
df.drop(rows_to_drop, inplace=True)

# 方式2:更简洁的写法
df = df.drop(df.index[irange])

方法3:通过保留行间接删除(替代思路)

如果irange是要删除的位置,也可以通过保留除这些位置外的所有行来实现:

df = df.iloc[[x for x in range(len(df)) if x not in irange]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 04:22:33