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

如何在DataFrame列中定位指定值并选取其及后续所有记录?

解决方案

你的代码里get_loc存在潜在问题:如果num列中有重复的11006939,或者该值不存在时,会抛出错误。可以用更稳健的方式定位目标值位置,再完成切片。

修正后的完整函数如下:

import pandas as pd

def missing_reg_nums():
    df = pd.read_csv("df_1.csv")
    target_value = 11006939
    # 生成布尔掩码标记匹配行
    match_mask = df["num"] == target_value
    
    # 处理目标值不存在的情况
    if not match_mask.any():
        return pd.DataFrame(columns=df.columns)
    
    # 获取第一个匹配行的索引
    first_match_idx = match_mask.idxmax()
    # 从匹配行开始选取所有后续记录(包含匹配行)
    result_df = df.loc[first_match_idx:]
    
    # 若只需要保留目标列,替换为下面这行
    # result_df = df.loc[first_match_idx:, ["num"]]
    
    return result_df

关键说明:

  • match_mask = df["num"] == target_value:生成布尔数组,标记num列等于目标值的行
  • match_mask.any():提前检查目标值是否存在,避免后续代码报错
  • match_mask.idxmax():返回第一个匹配行的索引(布尔值True等价于1,idxmax会取第一个最大值的位置)
  • df.loc[first_match_idx:]:从第一个匹配行开始,截取到末尾的所有记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:30:52