2017-02-15 2 views
3

그룹화 및 집계 후에 데이터 (팬더)를 정렬하려고하는데 막혔습니다. 내 데이터 : 그 내 데이터를 분류 한 후Python Pandas가 groupby 및 집계 후 정렬

data = {'from_year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012], 
    'name': ['John', 'John1', 'John', 'John', 'John4', 'John', 'John1', 'John6'], 
    'out_days': [11, 8, 10, 15, 11, 6, 10, 4]} 
persons = pd.DataFrame(data, columns=["from_year", "name", "out_days"]) 

days_off_yearly = persons.groupby(["from_year", "name"]).agg({"out_days": [np.sum]}) 

print(days_off_yearly) 

:

내가 할 FROM_YEAR 및 out_days 합 기대 데이터로 내 데이터를 정렬 할
   out_days 
        sum 
from_year name   
2010  John  17 
2011  John  15 
      John1  18 
2012  John  10 
      John4  11 
      John6  4 

:

   out_days 
        sum 
from_year name   
2012  John4  11 
      John  10 
      John6  4  
2011  John1  18 
      John  15 
2010  John  17 

I을 시도 중입니다

print(days_off_yearly.sort_values(["from_year", ("out_days", "sum")], ascending=False).head(10)) 

KeyError 가져 오기 : 'from_year'.

도움을 주시면 감사하겠습니다.

답변

5

당신은 sort_values를 사용할 수 있지만 처음 reset_index 다음 set_index :

#simplier aggregation 
days_off_yearly = persons.groupby(["from_year", "name"])['out_days'].sum() 
print(days_off_yearly) 
from_year name 
2010  John  17 
2011  John  15 
      John1 18 
2012  John  10 
      John4 11 
      John6  4 
Name: out_days, dtype: int64 

print (days_off_yearly.reset_index() 
         .sort_values(['from_year','out_days'],ascending=False) 
         .set_index(['from_year','name'])) 
       out_days 
from_year name   
2012  John4  11 
      John   10 
      John6   4 
2011  John1  18 
      John   15 
2010  John   17