This question already has answers here:
groupby counter of rows
                                
                                    (2个答案)
                                
                        
                                去年关闭。
            
                    
我正在尝试在data.frame中的组内建立索引

例如,在此数据框中

Col1
A
A
A
B
B
C
D
D
D


我想输出如下

Col1    idx
A   1
A   2
A   3
B   1
B   2
C   1
D   1
D   2
D   3


在R中,我可以简单地使用data.table df[, idx:=seq_len(.N), by=Col1]执行以下操作。我在Python中找不到等效项时遇到麻烦。到目前为止,我知道我可以在linspace的程序包中使用arrangenumpy函数,但是我不确定如何按组进行操作。

先感谢您。

最佳答案

使用cumcount

In [289]: df['idx'] = df.groupby('Col1').cumcount().add(1)

In [290]: df
Out[290]:
  Col1  idx
0    A    1
1    A    2
2    A    3
3    B    1
4    B    2
5    C    1
6    D    1
7    D    2
8    D    3

10-05 22:42
查看更多