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

按首个指定值所在行拆分DataFrame的技术咨询

按指定值首次出现位置拆分DataFrame

刚好碰到过类似的需求,用Pandas几步就能精准实现你要的拆分逻辑——在disease列首次出现"A"的位置把DataFrame切成两部分,最后保留后半段。

先搭好示例数据

先把你给的测试数据转换成Pandas DataFrame:

import pandas as pd

data = {
    'patid': [3, 99, 4, 1002, 43, 745, 399, 545, 8],
    'disease': ['Z', 'B', 'A', 'B', 'A', 'C', 'Z', 'A', 'A']
}
df = pd.DataFrame(data)

定位"A"首次出现的位置

我们可以用布尔索引标记所有disease等于"A"的行,再用idxmax()拿到第一个匹配行的索引(因为idxmax会返回第一个True对应的位置,刚好符合“首次出现”的要求):

first_a_index = df['disease'].eq('A').idxmax()

这里得到的first_a_index是2(Pandas用0起始索引,对应第三行)。

拆分并保留目标数据

现在就可以按这个索引拆分了:

  • 要丢弃的前半段:df_discard = df.iloc[:first_a_index](也就是你说的前两行)
  • 需要保留的后半段:df_keep = df.iloc[first_a_index:]

直接输出df_keep就是你要的结果:

patiddisease
4A
1002B
43A
745C
399Z
545A
8A

容错小补充

如果你的数据里可能存在没有"A"的情况,建议加个判断避免报错:

if df['disease'].eq('A').any():
    first_a_index = df['disease'].eq('A').idxmax()
    df_keep = df.iloc[first_a_index:]
else:
    # 根据你的需求处理,比如返回原数据或者提示
    df_keep = df

这样就完美覆盖你要的场景啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:00:41