如何在DataFrame中新增每3行数值递增1的新列
如何为DataFrame添加每3行数值递增1的新列?
问题场景
需要给现有DataFrame新增数值列,实现每3行数值递增1,对应示例如下:
原始DataFrame结构:
a b 0 20 30 1 44 12 2 58 23 3 20 30 4 44 12 5 58 23 6 20 30 7 44 12 8 58 23预期输出(新增year列):
a b year 0 20 30 1995 1 44 12 1995 2 58 23 1995 3 20 30 1996 4 44 12 1996 5 58 23 1996 6 20 30 1997 7 44 12 1997 8 58 23 1997
实现方法
直接用pandas原生的整数除法运算即可,无需写循环,代码简洁性能高:
import pandas as pd # 核心逻辑:行索引整除3得到分组序号,加上起始值1995得到目标列值 df['year'] = df.index // 3 + 1995
适配调整说明
- 如果DataFrame索引不是从0开始的连续整数,先执行
df = df.reset_index(drop=True)重置索引后再计算,避免结果偏移 - 如需修改每组的行数,直接替换
//后的数字3即可 - 如需修改列的起始值,替换代码里的1995为目标初始值即可
- 该方法适配任意行数的DataFrame,即使最后一组不足指定行数也能正常赋值
内容的提问来源于stack exchange,提问作者nurer
相关产品推荐
相关产品推荐

