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

如何给Pandas DataFrame添加列以枚举相同索引的行?

给带重复索引的Pandas DataFrame添加顺序枚举的day列

嘿,刚好碰到过类似需求,用Pandas的groupby加cumcount()就能轻松实现你要的效果,而且完全符合从1开始计数的要求~

先明确你的需求和初始数据

你需要给变量df的DataFrame新增day列,对相同索引的行按顺序从1开始编号。

初始的DataFrame代码:

import pandas as pd

df = pd.DataFrame(data=[['a1','b1'],['a2','b2'],['a3','b3'],['a4','b4']],columns=['a','b'],index=[9,9,12,14])

初始输出效果:

a   b
9  a1  b1
9  a2  b2
12 a3  b3
14 a4  b4

你期望的最终结果:

day  a   b
9    1  a1  b1
9    2  a2  b2
12   1  a3  b3
14   1  a4  b4

直接上解决方案代码

# 核心:按索引分组后计数,加1转为从1开始
df['day'] = df.groupby(level=0).cumcount() + 1

# 可选:调整列顺序,把day列移到最前面(和你的示例对齐)
df = df[['day', 'a', 'b']]

简单解释下原理

  • groupby(level=0):这里的level=0就是指按行索引分组,把所有索引相同的行归为一组。
  • cumcount():这个方法会给每个分组内的行从0开始排序号,比如索引9的两行会得到0和1。
  • +1:把0起始的计数改成1起始,正好对应你要的day列的编号逻辑。
  • 最后调整列顺序是可选操作,如果不需要改变原有列的位置,直接跳过就行。

运行完这段代码,你就能得到和你期望一模一样的DataFrame啦!

内容的提问来源于stack exchange,提问作者gabboshow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:37:59