如何验证Pandas DataFrame列是否为从1开始的连续序列?
确认DataFrame列是否为从1开始的连续序列的最优方法
核心判断逻辑
要验证目标列是否是从最小值1开始的连续序列,只需要确认两个关键点:
- 列的最小值必须是1
- 列的唯一值数量等于列的最大值(因为从1到max_val恰好包含max_val个不同的整数)
实现代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({'Col1': [1, 2, 3, 4, 6, 5]}) def is_continuous_from_one(col): col_min = col.min() col_max = col.max() unique_count = col.nunique() return col_min == 1 and unique_count == col_max # 测试示例 print(is_continuous_from_one(df['Col1'])) # 输出: True
为什么这是最优方案
pandas的min()、max()、nunique()都是底层优化的向量操作,时间复杂度为O(n),比先排序再逐一对比的O(n log n)效率更高,尤其适合处理大规模数据集。
边界情况验证
- 单元素列
[1]:返回True - 含重复值的列
[1,1,2,3]:返回True - 缺失中间值的列
[1,3]:返回False - 起始值不为1的列
[2,3,4]:返回False
内容的提问来源于stack exchange,提问作者Paulo Cortez
相关产品推荐
相关产品推荐

