如何查找pandas DataFrame逐行递增1的列中被跳过的缺失数字
Pandas 递增列跳号检测方案
核心逻辑是提取目标列的最小值、最大值,生成该区间内所有连续整数的集合,和列中现有值做差集得到缺失的跳号值,无缺失则返回True。
实现代码
import pandas as pd def check_item_continuity(df, col="item_number"): values = df[col].astype(int) full_set = set(range(values.min(), values.max() + 1)) missing_nums = sorted(full_set - set(values)) return True if len(missing_nums) == 0 else [str(num) for num in missing_nums]
效果测试
代入给出的样例数据运行:
df1 = pd.DataFrame({ "item_number" : [1, 2, 3, 4, 5, 6, 8, 10], "col_A" : ['aaa','bbb','ccc','ddd','eee','fff','hhh', 'jjj'] }) print(check_item_continuity(df1))
输出完全符合预期:
['7', '9']
当item_number列无跳号、逐行增量为1时,函数直接返回布尔值True。
如果需要严格校验行维度的增量合法性(比如排查数值倒序、非逐行+1的乱序异常),可以在函数中新增差分判断逻辑:计算相邻行的差值,存在差值不等于1的非跳号场景时抛出对应错误即可。
内容的提问来源于stack exchange,提问作者onlywynter
相关产品推荐
相关产品推荐

