На следующем типе данных я хотел бы иметь возможность сортировать и ранжировать поле id
на дату:
df = pd.DataFrame({
'id':[1, 1, 2, 3, 3, 4, 5, 6,6,6,7,7],
'value':[.01, .4, .2, .3, .11, .21, .4, .01, 3, .5, .8, .9],
'date':['10/01/2017 15:45:00','05/01/2017 15:56:00',
'11/01/2017 15:22:00','06/01/2017 11:02:00','05/01/2017 09:37:00',
'05/01/2017 09:55:00','05/01/2017 10:08:00','03/02/2017 08:55:00',
'03/02/2017 09:15:00','03/02/2017 09:31:00','09/01/2017 15:42:00',
'19/01/2017 16:34:00']})
, чтобы эффективно ранжировать или индексировать, для id
, на основеdate.
Я использовал
df.groupby('id')['date'].min()
, что позволяет мне извлечь первую дату (хотя я не знаю, как использовать это для фильтрации строк), но я мог бы невсегда нужна первая дата - иногда она будет второй или третьей, поэтому мне нужно создать новый столбец с индексом для даты - результат будет выглядеть следующим образом:

Есть какие-нибудь идеи по поводу этой сортировки / ранжирования / маркировки?
РЕДАКТИРОВАТЬ
Моя оригинальная модель проигнорировала очень распространенную проблему.
Поскольку возможно, что некоторыеid
с несколькими параллельными тестами, поэтому они отображаются в нескольких строках в базе данных с совпадающими датами (date
соответствует дате их регистрации).Они должны учитываться как одна и та же дата, а не увеличивать date_rank: я сгенерировал модель с обновленным date_rank
, чтобы продемонстрировать, как это будет выглядеть:
df = pd.DataFrame({
'id':[1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6,6,6,7,7],
'value':[.01, .4, .5, .7, .77, .1,.2, 0.3, .11, .21, .4, .01, 3, .5, .8, .9, .1],
'date':['10/01/2017 15:45:00','10/01/2017 15:45:00','05/01/2017 15:56:00',
'11/01/2017 15:22:00','11/01/2017 15:22:00','06/01/2017 11:02:00','05/01/2017 09:37:00','05/01/2017 09:37:00','05/01/2017 09:55:00',
'05/01/2017 09:55:00','05/01/2017 10:08:00','05/01/2017 10:09:00','03/02/2017 08:55:00',
'03/02/2017 09:15:00','03/02/2017 09:31:00','09/01/2017 15:42:00',
'19/01/2017 16:34:00']})
И счетчик может себе это позволить:
