如何用Pandas识别各CODE分组内ID序列不连续的对应CODE值
问题解答
思路正确性判断
你的思路完全可行,只需要补充一个小前提:校验前要先把同一个CODE对应的ID列表做升序排序,避免Excel里行的顺序打乱导致判断错误。比如ABC的行如果顺序是1、4、2,不排序直接校验会得到错误结果,排序后得到[1,2,4]再校验就完全准确。
可以用Python实现逻辑参考:
# 模拟表格数据 data = [ ("ABC", 1), ("ABC", 2), ("BCD", 1), ("ABC",4), ("CDE",1), ("CDE",2), ("BCD",5) ] # 第一步:构建CODE对应ID列表的字典 code_ids = {} for code, id_val in data: if code not in code_ids: code_ids[code] = [] code_ids[code].append(id_val) # 第二步:校验连续性 invalid_codes = [] for code, ids in code_ids.items(): sorted_ids = sorted(ids) is_continuous = True for i in range(1, len(sorted_ids)): if sorted_ids[i] != sorted_ids[i-1] + 1: is_continuous = False break if not is_continuous: invalid_codes.append(code) print(invalid_codes) # 输出 ['ABC', 'BCD']
三类语句适用场景说明
- If/Else:用于单次条件分支判断,不需要重复执行代码,仅需根据某个条件是否成立选择不同执行路径时使用。比如判断ID是否比前一个大1、判断字典里是否已经存在某个CODE的键,都属于单次条件判断场景。
- For循环:用于遍历已知长度/范围的可迭代对象(比如列表、字典、固定次数的范围),你明确知道要循环多少次或者要遍历所有元素时使用。比如遍历所有表格行构建字典、遍历每个CODE的ID列表做连续性校验,都适合用For循环。
- While循环:用于在满足指定条件时重复执行代码,你不知道具体要循环多少次,只知道满足某个条件就停止时使用。比如读取用户输入直到用户输入指定终止字符、批量处理数据直到所有数据处理完成(无固定迭代次数)的场景适合用While循环。
内容的提问来源于stack exchange,提问作者pilotmike327
相关产品推荐
相关产品推荐

