You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:04:50