Python 根据列中的常用编号指定递增编号

Python 根据列中的常用编号指定递增编号,python,pandas,group-by,Python,Pandas,Group By,我的数据集中有一列如下所示: col1 100 100 100 101 101 102 102 103 103 103 103 104 104 我想创建一个列,使每个组的数量不断增加。具体来说,col1中的100表示01。接下来的100个将有02个,以此类推。当它到达有101的行时,它将执行类似的操作:01,下一个101,02,就像它对100所做的那样 我尝试过,但我无法让它实现我的计划: 我得先做一个新专栏 df['nc'] = df.groupby(col1) 这是错误的 期望输出:

我的数据集中有一列如下所示:

col1
100
100
100
101
101
102
102
103
103
103
103
104
104
我想创建一个列,使每个组的数量不断增加。具体来说,col1中的100表示01。接下来的100个将有02个,以此类推。当它到达有101的行时,它将执行类似的操作:01,下一个101,02,就像它对100所做的那样

我尝试过,但我无法让它实现我的计划: 我得先做一个新专栏

df['nc'] = df.groupby(col1)
这是错误的

期望输出:

    col1   nc
    100    01
    100    02
    100    03
    101    01
    101    02
    102    01
    102    02
    103    01
    103    02
    103  ........ and so on
    103
    104
    104

我想你在找这个

df['nc'] = df.groupby('col1').cumcount()+1
其中:

   col1  nc
0   100   1
1   100   2
2   100   3
3   101   1
4   101   2
5   102   1
6   102   2
7   103   1
8   103   2
9   103   3
10  103   4
11  104   1
12  104   2

如果需要前导零,您可以根据需要设置数字格式。

对不起,我不理解您的逻辑。你能用一个你想要的结果的例子来回答你的问题吗?我更新了它。更清楚。可能重复:我确实需要前导零,如果你知道怎么做,请在你的答案中包含它。只需使用df.groupby'col1.cumcount+1.astypestr.str.zfill2。