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

如何在Pandas DataFrame中删除特定值所在行及下一行?

解决Pandas DataFrame删除指定行及其下一行的问题

嘿,我来帮你搞定这个问题!你现在的代码只排除了Cat行的下一行,但Cat本身的行还留在DataFrame里,这就是为什么结果里还有那行Cat a。咱们来调整一下逻辑,同时删掉Cat行和它紧跟的下一行:

完整解决方案代码

import pandas as pd

d = ({ 
 'Code' : ['Foo','Bar','Cat','Foo','Foo'],
 'Int' : ['x','y','a','a','x'],
})
df = pd.DataFrame(d)

# 定位所有Code为'Cat'的行索引
cat_rows = df[df['Code'] == 'Cat'].index
# 组合需要删除的索引:Cat行 + 它的下一行
to_remove = cat_rows.union(cat_rows + 1)
# 删除目标行,可选重置索引让序号连续
result_df = df.drop(to_remove).reset_index(drop=True)

print(result_df)

运行结果

Code Int
0  Foo   x
1  Bar   y
2  Foo   x

逻辑解释

  • 定位目标行:cat_rows = df[df['Code'] == 'Cat'].index 会拿到所有Code列值为Cat的行索引(这里是[2])。
  • 扩展删除范围:cat_rows + 1 得到这些行的下一行索引(这里是[3]),用union()合并两组索引,确保不会有重复值(同时自动处理Cat在最后一行时,下一行索引超出DataFrame范围的情况,Pandas的drop会忽略不存在的索引)。
  • 删除并整理结果:drop(to_remove) 删除所有目标行,reset_index(drop=True) 可选,用来让结果的索引从0开始连续,不需要的话可以直接去掉这部分。

替代方案:布尔掩码写法

如果你更习惯用布尔筛选的方式,也可以这么写:

mask = ~df.index.isin(to_remove)
result_df = df[mask]

最终效果和上面的代码完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:31