2016-03-17 55 views
1

熊貓新手,想要變得更好。我想group_by「ID」列,然後order_by「col2」,然後「col3」,然後採取頂部的觀察。 在此先感謝熊貓,選擇第一個觀察組和排序

In[5]:df 
    Out[5]: 
      id   col2   col3 
    0   1   2   5 
    1   1   2   2 
    2   2   8   3 
    3   2   3   6 
    4   2   3   1 
    5   1   3   7 
    6   2   5   6 
    7   1   8   6 

期望:

In[6]:df_selection 
    Out[6]: 
      id   col2   col3 
    0   1   2   2 
    1   2   3   1 

回答

1

很短的方式做,這將是這些列,組排序,取前各組:

>>> df.sort_values(by=['col2', 'col3']).groupby('id').first() 
    col2 col3 
id  
1 2 2 
2 3 1 

要獲得確切的輸出作爲您的問題,只需重置索引:

>>> df.sort_values(by=['col2', 'col3']).groupby('id').first().reset_index() 
    id col2 col3 
0 1 2 2 
1 2 3 1 
+0

謝謝你,它的工作原理!只是一個好奇的問題,我將如何通過一個參數來升序/降序排序? – nonegiven72

+0

@ nonegiven72通過['ascending'關鍵字](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html):-)它需要一個bool或bools列表。 –