熊猫-通过将组中的重复项视为新项来对组内的项进行排名

时间:2018-09-21 15:43:38

标签: python pandas

数据框有两列(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

谢谢

1 个答案:

答案 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