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

在Pandas DataFrame中保留指定值首次出现前的所有行

在Pandas DataFrame中保留指定值首次出现前的所有行

嗨,我来帮你搞定这个需求!你想要保留DataFrame里某个值首次出现之前的所有行,刚好有两种简单好用的方法,我给你详细说说:

方法一:定位首次出现位置后切片

这种方法思路很直接——先找到目标值第一次出现的索引位置,再通过索引切片提取前面的行。

首先我们先构造你给出的示例DataFrame:

import pandas as pd

data = {
    'Year': [1997, 1998, 1999, 2000, 2001],
    'ID': [1, 2, 3, 4, 5],
    'Count': [0, 0, 1, 0, 1]
}
df = pd.DataFrame(data)

接下来定位目标值(这里是1)首次出现的索引:

# 筛选Count列等于1的行,取第一个匹配项的索引
first_occur_idx = df['Count'].eq(1).idxmax()

最后通过索引切片获取结果(注意切片是左闭右开,所以[:first_occur_idx]不会包含首次出现1的那一行):

result = df.iloc[:first_occur_idx]

方法二:用累积求和快速筛选

这种方法更简洁,一行代码就能搞定。核心思路是利用cumsum()(累积求和)的特性:在目标值首次出现前,累积求和的结果始终是0,一旦出现目标值,累积和就会变成1,之后无论后续值是0还是1,累积和都不会再回到0。

直接上代码:

result = df[df['Count'].cumsum() == 0]

运行以上任意一种方法,你都会得到想要的结果:

Year  ID  Count
0  1997   1      0
1  1998   2      0

两种方法都能完美满足需求,第一种更直观,适合需要明确查看首次出现位置的场景;第二种更简洁,适合快速实现需求。

备注:内容来源于stack exchange,提问作者PV8

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 10:22:56