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

如何在Pandas中删除首个满足多条件行之后的所有行

Pandas 删除指定条件行之后的所有行

给定如下Pandas DataFrame:

Low isLower  isPrevHigher  isNextHigher
0   22470.0    True         False          True
1   22480.0     NaN         False          True
2   22576.6     NaN         False          True
3   22600.4     NaN         False         False
4   22583.5     NaN          True          True
5   22652.2     NaN         False          True
6   22656.8     NaN         False         False
7   22646.5     NaN          True         False
8   22600.0     NaN          True         False
9   22555.0     NaN          True          True
10  22580.1     NaN         False          True
11  22620.0     NaN         False          True
12  22682.2     NaN         False         False
13  22681.0     NaN          True          True
14  22710.8     NaN         False         False
15  22657.2     NaN          True         False
16  22623.0     NaN          True          True
17  22634.0     NaN         False          True
18  22660.0     NaN         False          True
19  22673.6     NaN         False          True
20  22721.2     NaN         False         False
21  22580.0     NaN          True         False
22  22552.6     NaN          True         False
23  22382.6    True          True         False
24  22353.0    True          True         False
25  22341.7    True          True         False
26  22312.4    True          True         False
27  22256.4    True          True          True
28  22310.6    True         False         False
29  22286.0    True          True          True
30  22306.8    True         False          True
31  22386.3    True         False         False

需求是:删除首个满足isLower == True、isPrevHigher == True且isNextHigher == True的行之后的所有行,即保留第27行及之前的内容。

解决方案

  1. 筛选出同时满足三个条件的行,获取它们的索引列表
  2. 提取列表中的第一个索引值(即首个符合条件的行的位置)
  3. 截取DataFrame到该索引位置(包含该行)

代码实现

import pandas as pd

# 假设你的DataFrame名为df
# 筛选符合条件的行,获取索引
target_indices = df[(df['isLower'] == True) & 
                    (df['isPrevHigher'] == True) & 
                    (df['isNextHigher'] == True)].index

# 处理存在符合条件行的情况
if len(target_indices) > 0:
    first_target_idx = target_indices[0]
    # 截取到目标行,保留之前的所有内容
    df_filtered = df.loc[:first_target_idx]
else:
    # 无符合条件的行时,保留原DataFrame
    df_filtered = df.copy()

执行上述代码后,df_filtered就是保留了首个符合条件行及之前内容的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:27:20