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

如何删除DataFrame的第i行?DF.drop(i)执行无效的问题

为什么DF = DF.drop(i)删除DataFrame第i行没生效?

下面是几种常见原因和对应解决办法:

  • 索引标签≠行位置
    drop()默认按索引标签删除行,不是按行的物理位置顺序。如果你的DataFrame索引不是连续整数(比如之前删过行导致索引断层,或是用了自定义索引),直接传数字i要么删错行,要么因为找不到对应标签而无变化。
    解决:要按行位置删除,改用DF = DF.drop(DF.index[i]),或者用DF = DF.iloc[:i].append(DF.iloc[i+1:])。

  • 目标索引不存在
    如果i不是当前DataFrame的索引标签,drop()默认会忽略该操作(errors='ignore'是默认参数),既不报错也不修改数据。比如索引是[1,3,5],执行DF.drop(2)时根本没有对应索引的行,自然看不到变化。
    解决:先打印print(DF.index)确认现有索引,或者添加errors='raise'强制报错排查:DF = DF.drop(i, errors='raise'),若索引不存在会直接抛出异常,快速定位问题。

  • 数据类型不匹配
    比如索引是字符串类型(如["a","b","c"])但你传的i是整数1,或者索引是整数但i是字符串"1",都会导致匹配失败,删除操作无效。
    解决:检查type(i)和DF.index.dtype是否一致,将i转换成和索引相同的类型再执行删除。

  • 代码逻辑有覆盖
    若执行DF = DF.drop(i)之后,又有代码重新给DF赋值(比如重新读取数据源),之前的删除操作会被覆盖,看起来像是没生效。
    解决:检查代码顺序,确保删除操作之后没有重置DF的语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:12:25