2017-01-07 36 views
7

Làm cách nào để nhóm giá trị của khung dữ liệu gấu trúc và chọn (theo ngày) mới nhất từ ​​mỗi nhóm?nhóm theo pandas dataframe và chọn mới nhất trong mỗi nhóm

Ví dụ, cho một dataframe được sắp xếp theo ngày:

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 

nhóm bằng id hoặc sản phẩm, và chọn sớm nhất cho:

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

Trả lời

7

sử dụng idxmax trong groupby và lát df với 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

Công trình này đẹp mắt! – Aaron

4

Bạn cũng có thể sử dụng tail với nhóm để nhận giá trị n cuối cùng của nhóm:

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

Tôi thích điều này vì nó có thể được áp dụng cho nhiều hơn ngày tháng. – scottlittle

Các vấn đề liên quan