如何在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
相关产品推荐
相关产品推荐

