我正在尝试向我的数据框 (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
答案 0 :(得分:0)
您可以使用 cumcount -
这个想法是将 groupby
与 cumcount
结合使用,它会根据每个组集重置计数
>>> 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
>>>