1
df =  pd.DataFrame({'A':[3,5,2,5,4,2,5,2,3,1,4,1], 'B':['x','y','x','x','y','z','z','x','y','y','x','z']})

I'd like to add a column C that, for each letter in B, contains sequential integers:

    A  B  C
0   3  x  1
1   5  y  1
2   2  x  2
3   5  x  3
4   4  y  2
5   2  z  1
6   5  z  2
7   2  x  4
8   3  y  3
9   1  y  4
10  4  x  5
11  1  z  3
HappyPy
  • 9,839
  • 13
  • 46
  • 68

1 Answers1

2

You can use cumcount() grouping by B

df =  pd.DataFrame({'A':[3,5,2,5,4,2,5,2,3,1,4,1], 'B':['x','y','x','x','y','z','z','x','y','y','x','z']})
df['C'] = df.groupby('B').cumcount() + 1
ArchAngelPwn
  • 2,891
  • 1
  • 4
  • 17