2013-03-29 2 views
6

Tôi viết lại câu hỏi của mình. Tôi đang tìm kiếm giải pháp cho vấn đề sau đây:Python: Làm thế nào tôi có thể nhận được hàng có giá trị tối đa của nhóm mà họ thuộc về?

Tôi có một dataFrame như:

Sp Mt Value count 
4 MM2 S4 bg  10 
5 MM2 S4 dgd 1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi 8 

Mục tiêu của tôi là để có được tất cả các hàng nơi đếm max bình đẳng trong mỗi nhóm ví dụ :

MM4 S4 bg  10 
MM4 S2 cb  8 
MM4 S2 uyi 8 

tôi nhóm bởi [ 'Sp', 'Mt']

Ai biết làm thế nào tôi có thể làm điều đó trong gấu trúc hoặc trong python?

+1

Đây không phải là câu hỏi trước đây của bạn, được hỏi lần nữa? – DSM

+0

Có lỗi nhưng trước đó không được xây dựng tốt – jojo12

+0

Bản sao có thể có của [Python: Lấy Hàng có giá trị tối đa trong các nhóm sử dụng groupby] (http://stackoverflow.com/questions/15705630/python-getting-the-row -which-has-the-max-giá trị-trong-nhóm-sử dụng-groupby) –

Trả lời

14
>>> print d 
    Sp Mt Value Count 
ID      
4 MM2 S4 bg  10 
5 MM2 S4 dgd  1 
6 MM4 S2 rd  2 
7 MM4 S2 cb  8 
8 MM4 S2 uyi  8 

>>> d.groupby('Sp').apply(lambda t: t[t.Count==t.Count.max()]) 
     Sp Mt Value Count 
Sp ID      
MM2 4 MM2 S4 bg  10 
MM4 7 MM4 S2 cb  8 
    8 MM4 S2 uyi  8 
+2

Tôi vừa mới đăng 'df.groupby ([" Sp "," Mt "]) áp dụng (lambda x: x [x [" đếm "] == x [" đếm "]. max()])' cho câu hỏi khác; Tôi nghĩ rằng OP muốn một groupby trên cả hai. – DSM

+0

cảm ơn bạn rất nhiều vì các giải pháp của bạn! – jojo12