Pandas 按行分组计数器

Pandas 按行分组计数器,pandas,numpy,pandas-groupby,Pandas,Numpy,Pandas Groupby,我正在尝试创建一个新的变量,它计算随着时间的推移,同一个id被看到的次数 需要从此数据帧传递 id clae6 year quarter 1 475230.0 2007 1 1 475230.0 2007 2 1 475230.0 2007 3

我正在尝试创建一个新的变量,它计算随着时间的推移,同一个id被看到的次数

需要从此数据帧传递

   id     clae6  year    quarter        
     1  475230.0  2007          1                   
     1  475230.0  2007          2                     
     1  475230.0  2007          3                     
     1  475230.0  2007          4                    
     1  475230.0  2008          1
     1  475230.0  2008          2         
     2  475230.0  2007          1                    
     2  475230.0  2007          2                    
     2  475230.0  2007          3                  
     2  475230.0  2007          4                   
     2  475230.0  2008          1     
     3  475230.0  2010          1     
     3  475230.0  2010          2     
     3  475230.0  2010          3     
     3  475230.0  2010          4     
对此

   id     clae6  year    quarter     new_variable      
     1  475230.0  2007          1         1   
     1  475230.0  2007          2         2            
     1  475230.0  2007          3         3            
     1  475230.0  2007          4         4           
     1  475230.0  2008          1         5
     1  475230.0  2008          2         6
     2  475230.0  2007          1         1           
     2  475230.0  2007          2         2           
     2  475230.0  2007          3         3         
     2  475230.0  2007          4         4          
     2  475230.0  2008          1         5
     3  475230.0  2010          1         1
     3  475230.0  2010          2         2
     3  475230.0  2010          3         3
     3  475230.0  2010          4         4 
我正在使用以下代码,但可能还有一个更简单的代码(我正在对大量记录进行操作,因此我正在寻找一个更快的代码):

你可以用rank

df['new'] = df.groupby('id').rank(method = 'first').astype(int)

    id  clae6   year    quarter new
0   1   475230.0    2007    1   1
1   1   475230.0    2007    2   2
2   1   475230.0    2007    3   3
3   1   475230.0    2007    4   4
4   1   475230.0    2008    1   5
5   1   475230.0    2008    2   6
6   2   475230.0    2007    1   1
7   2   475230.0    2007    2   2
8   2   475230.0    2007    3   3
9   2   475230.0    2007    4   4
10  2   475230.0    2008    1   5
11  3   475230.0    2010    1   1
12  3   475230.0    2010    2   2
13  3   475230.0    2010    3   3
14  3   475230.0    2010    4   4
你可以用rank

df['new'] = df.groupby('id').rank(method = 'first').astype(int)

    id  clae6   year    quarter new
0   1   475230.0    2007    1   1
1   1   475230.0    2007    2   2
2   1   475230.0    2007    3   3
3   1   475230.0    2007    4   4
4   1   475230.0    2008    1   5
5   1   475230.0    2008    2   6
6   2   475230.0    2007    1   1
7   2   475230.0    2007    2   2
8   2   475230.0    2007    3   3
9   2   475230.0    2007    4   4
10  2   475230.0    2008    1   5
11  3   475230.0    2010    1   1
12  3   475230.0    2010    2   2
13  3   475230.0    2010    3   3
14  3   475230.0    2010    4   4
利用

利用


@LucasDresl yw~:-)是的,对不起,我的朋友,我可以请你帮我回答这个问题吗?我的工作忙得不可开交。“面板数据:企业的过渡矩阵”@LucasDresl它看起来像一个支点problem@LucasDreslyw~:-)是的,对不起,我的孩子。我可以请你帮我回答这个问题吗?我的工作忙得不可开交。“面板数据:企业的过渡矩阵”@LucasDresl这看起来像一个轴心问题
df.groupby('id').cumcount().add(1)
Out[1574]: 
0     1
1     2
2     3
3     4
4     5
5     6
6     1
7     2
8     3
9     4
10    5
11    1
12    2
13    3
14    4
dtype: int64