У меня есть такой набор данных (здесь дополнительный означает несколько дополнительных столбцов) :
>>> df = pd.DataFrame({'id_police':['p123','p123','p123','b123','b123'],
'dateeffe':['24/01/2018','24/11/2017','25/02/2018','24/02/2018','24/02/2018'],
'date_fin':['23/03/2018','23/12/2017','26/03/2018','25/02/2018','25/02/2018'],
'prime':[0,20,10,20,30],
'prime2':[0,30,10,20,0],
'extra':[12,12,13,15,20],
...
})
###
id_police dateeffe date_fin prime prime2 extra ...
0 p123 24/01/2018 23/03/2018 0 0 12 ...
1 p123 24/11/2017 23/12/2017 20 30 12 ...
2 p123 25/02/2018 26/03/2018 10 10 13 ...
3 b123 24/02/2018 25/02/2018 20 20 15 ...
4 b123 24/02/2018 25/02/2018 30 0 20 ...
Я хочу отсортировать даты (например, 2017, затем 2018 ...) в каждом столбцеid_police
также мне придется сохранять максимальное простое число в каждом дубликате dateeffe
и date_fin
, как в 3 и 4, имеющих одинаковые id_police
.
Это ожидаемый результат:
id_police dateeffe date_fin prime prime2 extra ...
0 p123 24/11/2017 23/12/2017 20 30 12 ...
1 p123 24/01/2018 23/03/2018 0 0 12 ...
2 p123 25/02/2018 26/03/2018 10 10 13 ...
3 b123 24/02/2018 25/02/2018 30 20 15 ...
Чтобы найти максимальное простое и простое2, я использовал это:
df = df.groupby(['id_police','dateeffe','date_fin'],as_index=False).agg({'prime':'max','prime2':'max'})
Это то, что я пытался, но он группирует все, и я теряю столбец дополнительно ...
df1 = df.sort_values(['dateeffe','date_fin']).groupby('id_police', as_index=False).apply(lambda x: x)
Я посмотрел везде, и я ценю вашу помощь, спасибо заранее!