根据列中的公共号分配增加的数字

时间:2018-06-13 09:50:14

标签: python pandas group-by

我的数据集中有一列看起来像这样:

col1
100
100
100
101
101
102
102
103
103
103
103
104
104

我想创建一个列,每个组的数量越来越多。具体而言,100col1的位置将为01。下一个100将有02,依此类推。当它到达具有101的行时,它将执行类似的操作:01,下一个10102就像使用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

1 个答案:

答案 0 :(得分:4)

我认为你正在寻找这个。

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

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