2016-02-26 52 views
3

我想通過pandas數據透視表中行的總和對最後一列/頁邊距/ aggrfunc進行降序排序。我知道我錯過了一些簡單的東西,但我無法弄清楚。按頁邊距('All')的值對Pandas數據透視表進行排序

據幀/透視表:

WIDGETS   
DATE 2/1/16 2/2/16 2/3/16 All 
NAME     
PERSON1 43  5    48 
PERSON2   4  7  11 
PERSON3   56  143  199 

我需要它做的也是排序aggfunc /邊距:

WIDGETS   
DATE 2/1/16 2/2/16 2/3/16 All 
NAME     
PERSON3   56  143  199 
PERSON1 43  5    48 
PERSON2   4  7  11 

pt = pd.pivot_table(df,values=['WIDGETS'],index=['NAME'],columns=['DATE'],aggfunc=len,fill_value='',margins=True,margins_name='WIDGETS') 
pt.sort_values(by='WIDGETS',ascending=False,inplace=True) 

錯誤: ValueError異常:不能排序列小部件您需要明確提供所有級別的多指標

建議?

回答

6

可以在功能sort_values和參數ascending使用元組:

print pt 
     WIDGETS     
DATE  2/1/16 2/2/16 2/3/16 All 
NAME        
PERSON1  1  2   3 
PERSON2  2  4  3 9 
PERSON3  1    1 2 
All   4  6  4 14 

pt.sort_values(by=('WIDGETS', 'All'), ascending=False,inplace=True) 
print pt 
     WIDGETS     
DATE  2/1/16 2/2/16 2/3/16 All 
NAME        
All   4  6  4 14 
PERSON2  2  4  3 9 
PERSON1  1  2   3 
PERSON3  1    1 2 
+0

謝謝!這讓我走上了正確的道路,我必須做出2個改變:將所有內容添加到sort_values,如上所示,並將margins_name ='WIDGETS'更改爲margins_name ='All'。那樣做了! – Mike

+1

是的,或者你可以省略'margins_name',因爲默認是'All' – jezrael

+0

啊,是的。我現在看到了。我在學習,所以再次感謝你! – Mike

相關問題