如何为Pandas DataFrame新增每3行重复相同值的counter列
最优实现方案
最简便且通用性最强的方法是使用向量化整数整除运算,该方案走numpy底层运算,性能远高于迭代类实现,完美适配大规模数据集,同时不受DataFrame原有索引格式影响:
import numpy as np import pandas as pd # 通用写法,不管df原有索引是否连续/从0开始都可用 df['counter'] = np.arange(len(df)) // 3
如果你的DataFrame本身是默认的从0开始的连续整数索引,可以简化为:
df['counter'] = df.index // 3
方案说明
- 核心逻辑:每3个连续元素为一组,组序号从0开始依次递增,整数整除3正好可以把连续的0/1/2映射为0,3/4/5映射为1,以此类推,完全匹配需求
- 性能优势:向量化运算没有Python层循环,即使是千万级行的数据集也可以在毫秒级完成计算,远快于apply、遍历行等实现
- 通用性:用
np.arange(len(df))生成序列的方案,不受原DataFrame索引是否有缺失、是否从0开始、是否是数值类型的影响,适配所有合法的DataFrame结构
内容的提问来源于stack exchange,提问作者PParker
相关产品推荐
相关产品推荐

