2017-01-07 5 views
7

Как группировать значения фрейма данных pandas и выбирать последние (по дате) из каждой группы?group by pandas dataframe и выберите последние в каждой группе

Например, учитывая dataframe отсортирован по дате:

id  product date 
0 220 6647  2014-09-01 
1 220 6647  2014-09-03 
2 220 6647  2014-10-16 
3 826 3380  2014-11-11 
4 826 3380  2014-12-09 
5 826 3380  2015-05-19 
6 901 4555  2014-09-01 
7 901 4555  2014-10-05 
8 901 4555  2014-11-01 

группировка по идентификатору или продукта, и выбрать самый ранний дает:

id  product date 
2 220 6647  2014-10-16 
5 826 3380  2015-05-19 
8 901 4555  2014-11-01 

ответ

7

использование idxmax в groupby и ломтик df с loc

df.loc[df.groupby('id').date.idxmax()] 

    id product  date 
2 220  6647 2014-10-16 
5 826  3380 2015-05-19 
8 901  4555 2014-11-01 
+0

Это прекрасно работает! – Aaron

4

Вы также можете использовать tail с группой, чтобы получить последние n значений группы:

df.sort_values('date').groupby('id').tail(1) 

    id product date 
2 220 6647 2014-10-16 
8 901 4555 2014-11-01 
5 826 3380 2015-05-19 
+0

Мне это нравится, потому что оно может применяться не только к датам. – scottlittle