2013-06-26 47 views
0

我有興趣按每個組的條目數排序分組數據框。據我所知,我可以按照小組標籤排序,也可以根本不排序。假設我有10個條目屬於三個組。 A組有6名成員,B組有3名成員,C組有1名成員。現在,當我例如做一個grouped.describe(),我想要輸出的順序,以便顯示最多的組首先顯示。pandas:按組成員頻率對分組數據框進行排序

回答

2

我就從describe()拆散的統計數據,那麼你可以簡單地使用sort(),所以:

incsv = StringIO("""Group,Value 
B,1 
B,2 
B,3 
C,8 
A,5 
A,10 
A,15 
A,25 
A,35 
A,40""") 

df = pd.read_csv(incsv) 

groups = df.groupby('Group').describe().unstack() 

     Value             
     count  mean  std min 25% 50% 75% max 
Group               
A   6 21.666667 14.023789 5 11.25 20 32.5 40 
B   3 2.000000 1.000000 1 1.50 2 2.5 3 
C   1 8.000000  NaN 8 8.00 8 8.0 8 


dfstats.xs('Value', axis=1).sort('count', ascending=True) 

     count  mean  std min 25% 50% 75% max 
Group               
C   1 8.000000  NaN 8 8.00 8 8.0 8 
B   3 2.000000 1.000000 1 1.50 2 2.5 3 
A   6 21.666667 14.023789 5 11.25 20 32.5 40 

我逆轉的排序僅僅是一個例子,因爲它已經默認排序,但可以無論如何排序你想當然。

對於任何人可以通過計數排序而不丟棄或堆疊'價值'級別的獎金。 :)

+2

試試這個作爲你的最後一步:''groups.sort([('Value','count')],ascending = False)',雖然不確定它實際上更有用 – Jeff

+0

肯定比我更好。 xs(嘗試,我沒有意識到排序可以使用元組,這很好, –

+0

謝謝!除了解決我手邊的問題之外,你還教會了我一些關於大熊貓的常用方法。 – user857661