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

Pandas:如何基于列分组为DataFrame添加类索引列?

为Pandas DataFrame添加分组内的类索引列

要实现你想要的效果,最简洁的方法是使用Pandas的groupby()结合cumcount()函数——cumcount()会为每个分组内的元素分配从0开始的序号,我们只需要给它加1就能得到从1开始的计数。

完整代码示例

首先,先构造和你示例一致的DataFrame:

import pandas as pd

data = {
    'col1': ['AAAA', 'AAAA', 'AAAA', 'AAAA', 'BBBB', 'BBBB', 'CCCC', 'CCCC', 'CCCC', 'CCCC', 'CCCC'],
    'col2': ['fooW', 'fooX', 'fooY', 'fooZ', 'fooW', 'fooX', 'barV', 'barW', 'barX', 'barY', 'barZ']
}
df = pd.DataFrame(data)

接下来添加col3列:

df['col3'] = df.groupby('col1').cumcount() + 1

验证结果

运行后你会得到和你预期完全一致的DataFrame:

col1  col2  col3
0   AAAA  fooW     1
1   AAAA  fooX     2
2   AAAA  fooY     3
3   AAAA  fooZ     4
4   BBBB  fooW     1
5   BBBB  fooX     2
6   CCCC  barV     1
7   CCCC  barW     2
8   CCCC  barX     3
9   CCCC  barY     4
10  CCCC  barZ     5

原理说明

  • df.groupby('col1'):按照col1的值对DataFrame进行分组,把相同col1值的行归为一组。
  • .cumcount():对每个分组内的行进行从0开始的连续计数。
  • + 1:把计数从0起始调整为你需要的1起始。

这个方法高效且简洁,完全适配你的需求,不管分组的大小如何变化都能自动正确计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:28:38