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

如何在pandas DataFrame中从指定索引查找指定布尔值的首次出现行

实现步骤

1. 构造示例数据

先把你提供的表格转为pandas DataFrame:

import pandas as pd

data = {
    "A": [0.132003, 1.130127, 1.024180, 0.974466, 0.545952, -1.281247],
    "B": [-0.827317, -1.436737, 0.569605, -2.006747, -1.219217, -0.727707],
    "C": [-0.076467, -1.413681, 0.875906, -0.410001, -1.226825, -0.121306],
    "D": [True, True, True, False, False, True]
}
df = pd.DataFrame(data, index=[123, 124, 125, 126, 127, 128])

2. 核心查询代码

直接调用封装好的函数即可,你可以根据需求修改起始索引、目标布尔值、查询的布尔列名:

def find_first_boolean_row(df, start_idx, target_bool, bool_col="D"):
    # 第一步:从指定起始索引开始切片,只保留索引大于等于起始值的行
    filtered_df = df[df.index >= start_idx]
    # 第二步:筛选出布尔列等于目标值的行
    match_df = filtered_df[filtered_df[bool_col] == target_bool]
    # 第三步:返回第一个匹配的行,无匹配则返回None
    if not match_df.empty:
        return match_df.iloc[0]
    return None

# 代入你的场景参数调用
result = find_first_boolean_row(df, start_idx=123, target_bool=False)
print(result)

注意:如果你的DataFrame索引不是升序排列,执行切片前先调用df = df.sort_index()保证索引顺序正确,避免查询结果不符合预期。

3. 返回结果示例

对应你的测试数据,输出如下:

A    0.974466
B   -2.006747
C   -0.410001
D       False
Name: 126, dtype: object
  • 如果你需要返回DataFrame格式而非Series格式,把match_df.iloc[0]改成match_df.head(1)即可
  • 如果要单独取首次出现的索引值,调用match_df.index[0]即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:09:03