如何检测Pandas DataFrame指定列中连续逻辑序列的错误值
检测Pandas DataFrame id列是否连续的最简方法
直接将id列与从1开始的等长连续序列做逐元素对比,就能同时校验「起始值为1、步长为1无断档」两个要求,一行代码即可实现:
# 标记每行id是否存在错误,True为错误行 df['id_error'] = df['id'] != range(1, len(df) + 1)
如果需要直接提取所有错误行,使用以下代码即可:
# 筛选出所有id不符合要求的行 error_rows = df[df['id'] != range(1, len(df) + 1)]
针对你给出的示例DataFrame,执行后得到的error_rows会直接返回id为4的第三行数据,精准定位错误位置。
如果只需要判断整个DataFrame是否存在id错误,不需要定位具体行,可以用更高效的判断写法:
# 返回True表示存在id不连续/不符合规则的问题 has_id_error = not df['id'].equals(pd.RangeIndex(start=1, stop=len(df)+1))
补充备选方案
如果仅需要校验序列连续,不需要强制起始值为1,也可以用差分法判断:
# 返回True表示id序列步长全为1,无断档 is_continous = df['id'].diff().dropna().eq(1).all()
内容的提问来源于stack exchange,提问作者meuhfunk
相关产品推荐
相关产品推荐

