добавление текущего индекса в pandas, разделенные по идентификатору пользователя

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Учитывая этот набор данных

 CUSTOMER_ID,ORDER_AT
A,2020-11-11 23:30:13
A,2020-11-11 23:32:53
A,2020-11-11 23:34:44
A,2020-11-11 23:35:55
B,2020-11-11 23:37:54
B,2020-11-11 23:39:23
C,2020-11-09 23:59:46
C,2020-11-10 0:03:04
C,2020-11-10 0:05:35
C,2020-11-10 0:19:40
C,2020-11-11 2:48:17
C,2020-11-11 2:49:06
C,2020-11-11 2:50:39
C,2020-11-11 2:51:57
D,2020-11-14 1:12:52
D,2020-11-14 1:13:14
D,2020-11-14 16:56:18
 

как мне создать работающий вторичный индекс идентификатора транзакции, разделенный идентификатором CUSTOMER_ID?

мой желаемый результат будет

 CUSTOMER_ID,CUSTOMER_TRANSACTION_ID,ORDER_AT
A,0,2020-11-11 23:30:13
A,1,2020-11-11 23:32:53
A,2,2020-11-11 23:34:44
A,3,2020-11-11 23:35:55
B,0,2020-11-11 23:37:54
B,1,2020-11-11 23:39:23
C,0,2020-11-09 23:59:46
C,1,2020-11-10 0:03:04
C,2,2020-11-10 0:05:35
C,3,2020-11-10 0:19:40
C,4,2020-11-11 2:48:17
C,5,2020-11-11 2:49:06
C,6,2020-11-11 2:50:39
C,7,2020-11-11 2:51:57
D,0,2020-11-14 1:12:52
D,1,2020-11-14 1:13:14
D,2,2020-11-14 16:56:18
 

Ответ №1:

Попробуйте Groupby и cumcount() .

 df['CUSTOMER_TRANSACTION_ID']=df.groupby('CUSTOMER_ID').cumcount()
 

Комментарии:

1. Я не уверен, что вам нужен cumsum. общее количество достаточно (на основе вывода OP)

2. Вы правы @sammywemmy, отредактирует. Спасибо

3. отлично, спасибо! да, cumcount достаточно