Панды - ранжирование предметов в группе, рассматривая повторяющиеся предметы в группе как новые - PullRequest
0 голосов
/ 21 сентября 2018

Датафрейм имеет два столбца (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).Ищите решение, которое должно выглядеть примерно так:

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 голосов
/ 21 сентября 2018

Вы можете сделать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...