如何用Python找出Pandas DataFrame中缺失的ID数值?
找出Pandas DataFrame中1-900范围内缺失的ID数值
高效方案(无需循环)
不用遍历行,直接用集合差集操作就能快速得到结果,这也是处理这类问题的最优方式:
import pandas as pd # 替换成你的DataFrame和ID列名 df = pd.DataFrame({'id': [3, 6, 7, 9, 10]}) # 获取已存在的ID集合 existing_ids = set(df['id']) # 生成1到900的完整ID范围(range左闭右开,所以结束值写901) full_id_range = set(range(1, 901)) # 计算差集并排序得到缺失ID missing_ids = sorted(full_id_range - existing_ids) print(missing_ids) # 输出: [1, 2, 4, 5, 8]
为什么不用循环/iterrows?
iterrows()遍历行的效率极低,尤其是当DataFrame数据量较大时,会显著拖慢运行速度。集合的查找操作是O(1)时间复杂度,对比列表的O(n),性能差距会随着数据量增大而越来越明显。
如果你一定要用循环(仅作学习参考)
如果出于学习目的想尝试循环实现,也可以这样写:
import pandas as pd df = pd.DataFrame({'id': [3, 6, 7, 9, 10]}) # 把ID列转成列表 existing_ids = df['id'].tolist() missing_ids = [] # 遍历1到900的每个数值 for num in range(1, 901): if num not in existing_ids: missing_ids.append(num) print(missing_ids)
注意:这种方法在ID数量多的时候会比较慢,实际项目里优先用集合的方案。
内容的提问来源于stack exchange,提问作者zsayle
相关产品推荐
相关产品推荐

