Dataframe 有两列(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
谢谢
最佳答案
你可以这样做:
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
关于python - Pandas - 通过将组中的重复项目视为新项目来对组内的项目进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52447141/