I am working on a data frame as below,
JavaScript
x
17
17
1
import pandas as pd
2
df=pd.DataFrame({'A':['A','A','A','B','B','C','C','C','C'],
3
'B':['a','a','b','a','b','a','b','c','c'],
4
})
5
df
6
7
A B
8
0 A a
9
1 A a
10
2 A b
11
3 B a
12
4 B b
13
5 C a
14
6 C b
15
7 C c
16
8 C c
17
I want to create a new column with the sequence value for Column B subgroups based on Column A groups like below
JavaScript
1
11
11
1
A B C
2
0 A a 1
3
1 A a 1
4
2 A b 2
5
3 B a 1
6
4 B b 2
7
5 C a 3
8
6 C b 1
9
7 C c 2
10
8 C c 2
11
I tried this , but does not give me desired output
JavaScript
1
2
1
df['C'] = df.groupby(['A','B']).cumcount()+1
2
Advertisement
Answer
IIUC, I think you want something like this:
JavaScript
1
2
1
df['C'] = df.groupby('A')['B'].transform(lambda x: (x != x.shift()).cumsum())
2
Output:
JavaScript
1
11
11
1
A B C
2
0 A a 1
3
1 A a 1
4
2 A b 2
5
3 B a 1
6
4 B b 2
7
5 C c 1
8
6 C b 2
9
7 C c 3
10
8 C c 3
11