Pandas DataFrame如何从指定max_id起始添加自增id列
报错原因
你遇到的长度不匹配报错核心来自两个问题:
- Python 内置
range是左闭右开区间,原有代码range(max_id, max_id + len(df) + 1)生成的序列长度为len(df) + 1,和 DataFrame 的实际行数不匹配- 需求要求从
max_id的下一位开始生成自增ID,原有代码的起始值不符合要求
正确实现方案
方法1:修改原有列表推导式
最贴合你原有写法的修正版本:
df['id'] = [x for x in range(max_id + 1, max_id + len(df) + 1)]
调整后生成的序列长度刚好等于 DataFrame 行数,起始值也符合max_id下一位的要求。
方法2:Pandas原生向量化实现(推荐,适合大数据量场景)
避免Python层循环,性能更高:
# 用RangeIndex实现 df['id'] = pd.RangeIndex(start=max_id + 1, stop=max_id + len(df) + 1) # 也可以用numpy的arange实现 import numpy as np df['id'] = np.arange(max_id + 1, max_id + len(df) + 1)
内容的提问来源于stack exchange,提问作者Kevin Nash
相关产品推荐
相关产品推荐

