数据框有两列(ColA和ColB)
ColA ColB
123 A
123 B
123 C
123 C
123 D
123 C
123 C
456 A
456 B
456 D
456 D
456 E
我想通过将组中的重复项视为新项来创建一个在组中排名的新列(例如:在组123中将项C排名两次)。寻找一个应该像这样的解决方案:
ColA ColB ColC
123 A 1
123 B 2
123 C 3
123 C 3
123 D 4
123 C 5
123 C 5
456 A 1
456 B 2
456 D 3
456 D 3
456 E 4
谢谢
答案 0 :(得分:3)
您可以这样做:
df['ColC'] = df.groupby('ColA')['ColB'].transform(lambda x:(x!=x.shift()).cumsum())
>>> df
ColA ColB ColC
0 123 A 1
1 123 B 2
2 123 C 3
3 123 C 3
4 123 D 4
5 123 C 5
6 123 C 5
7 456 A 1
8 456 B 2
9 456 D 3
10 456 D 3
11 456 E 4