2017-06-13 42 views
0

我有一個數據幀,df,幾千行五列:coursestudent_IDassignmentteacher_commentteacher_comment_type。每行對應唯一的唯一teacher_comment;總共只有大約30種不同的課程和100種不同的作業。在熊貓度假村特定的列數據框

我很容易用df.groupby(['assignment', 'teacher_comment_type']).count()生成一個新的數據幀,由此我可以看到一個給定的分配以往任何時候任何學生接收到的每個teacher_comment_type,全線 - 並且也多少作出評論型次給予一定的分配。我現在想在本地爲每個assignment計數一欄,但我正在努力這樣做。

換句話說,現在,我有:

Essay 1 | formatting error | 4 
      | punctuation  | 5 
      | style feedback | 2 
      | ultimate score | 1 
Project B | formatting error | 3 
      | punctuation  | 5 
      | style feedback | 7 
      | ultimate score | 1 

等。自動,第二列是本地按字母順序排列(本地,我的意思是每個分配名稱在左側列)。但是我想按第三列在本地重新排序 - 按從大到小的順序排列。那有意義嗎?我用.sort_values擺弄無效(它會改變數據幀的整個結構,未能保持「本地」完整性 - 按指定名稱組織)。

謝謝。

回答

0

使用value_counts代替

df.groupby('assignment').teacher_comment_type.value_counts() 

assignment teacher_comment_type 
Essay 1  punctuation    5 
      formatting error  4 
      style feedback   2 
      ultimate score   1 
Project B style feedback   7 
      punctuation    5 
      formatting error  3 
      ultimate score   1 
Name: teacher_comment_type, dtype: int64