如何将一列添加到基于另一列递增的数据帧 - python

时间:2021-07-16 11:51:30

标签: python

我正在尝试向我的数据框 (python) 添加一个变量“n”,该变量基于另一列值递增。我有更多的变量,但想象一下这就是我所拥有的:

id    X     
1     1
1     2
1     3
2     4
2     5
3     6
3     7

这就是我想要的 - 一个基于重复 id 递增的变量 n,并在 id 更改时重新开始:

id    X     n   
1     1     1
1     2     2
1     3     3
2     4     1
2     5     2
3     6     1
3     7     2

1 个答案:

答案 0 :(得分:0)

您可以使用 cumcount -

这个想法是将 groupbycumcount 结合使用,它会根据每个组集重置计数

>>> import pandas as pd
>>> 
>>> 
>>> d = {'id':[1,1,1,2,2,3,3],'X':[1,2,3,4,5,6,7]}
>>> df = pd.DataFrame(d)
>>> df
   id  X
0   1  1
1   1  2
2   1  3
3   2  4
4   2  5
5   3  6
6   3  7
>>> 
>>> 
>>> 
>>> df['n'] = df.groupby('id').cumcount()+1
>>> df
   id  X  n
0   1  1  1
1   1  2  2
2   1  3  3
3   2  4  1
4   2  5  2
5   3  6  1
6   3  7  2
>>>