У меня есть следующие данные, которые извлекают 2 последних события на основе time из базы данных притока. Теперь я хотел бы добавить индекс с последним событием = 1 и предыдущим событием = 2. Индекс будет применяться, когда account_entity, base_ccy, source одинаковы, но дата отличается. last можно игнорировать для логики индекса.
account_entity base_ccy last source time
0 CORP BTC 23444 KRAKEN 2019-04-25
1 CORP BTC 23434555 KRAKEN 2019-04-26
2 CORP ETH 123423444 KRAKEN 2019-04-25
3 CORP ETH 1231,3423 KRAKEN 2019-04-26
10 PTE BCH 23543.7667 BITSTAMP 2019-06-04
11 PTE BCH 4 BITSTAMP 2019-06-05
24 PTE BTC 2345.67677 BITSTAMP 2019-04-26
25 PTE BTC 8745 BITSTAMP 2019-04-27
Я хотел бы добавить столбец, который сообщает, что такое индекс. Дополнительный столбец будет:
index
2
1
2
1
2
1
2
1
Любая помощь будет оценена по достоинству.






Попробуйте приведенный ниже код (не уверен, что правильная логика, но работает):
print(df.groupby(['account_entity', 'base_ccy']).cumcount().sub(1).abs().add(1))
Выход:
0 2
1 1
2 2
3 1
10 2
11 1
24 2
25 1
dtype: int64
@mamadede Ха-ха, я взломал его :P
Мило спасибо. это сработало для меня
data['index'] = data.groupby(['account_entity', 'base_ccy', 'source']).cumcount(ascending = False)