You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pandas定位特定行索引并删除的步骤及索引不一致问题解决

解决DataFrame删除行后索引不匹配的问题

我懂你遇到的这个麻烦——删掉含NaN的行之后,DataFrame的索引还保留着原来的标签,导致你找到的目标行标签(比如示例里的28)和实际行的位置对不上,直接用标签操作还会报错。下面给你两种简洁的解决办法:

方法一:重置索引后按位置删除

先把索引重置成连续的0起始序列,这样操作就和你直觉里的行位置完全一致了:

  1. 重置索引(加drop=True可以直接丢弃原来的旧索引列,让数据更整洁):
    app = app.reset_index(drop=True)
    
  2. 定位目标行的新索引:
    target_idx = app[app['prix'] == 'Everyone'].index[0]
    
  3. 删除该行:
    app = app.drop(target_idx)
    

方法二:直接按条件删除(更高效)

其实不用特意找索引,直接根据prix列的条件过滤掉目标行,一步就能完成:

# 方式A:用布尔索引直接过滤
app = app[app['prix'] != 'Everyone']

# 方式B:结合drop和条件索引
app = app.drop(app[app['prix'] == 'Everyone'].index)

为什么你之前的操作会报错?

删掉NaN行之后,DataFrame的索引标签还是原来的(比如示例里的28),但DataFrame的实际行数已经变成5了。你用app.index[28]时,是在按位置访问索引列表,而索引列表只有5个元素,自然会报IndexError。这时候的索引是「非连续的标签」,不是连续的位置序号,得区分开**标签索引(loc)位置索引(iloc)**的差异。

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

火山引擎 最新活动