2017-06-13 11 views
0

Ich habe einen Datenrahmen, df, von ein paar tausend Zeilen und fünf Spalten: course, student_ID, assignment, teacher_comment, teacher_comment_type. Jede Zeile entspricht einem eindeutigen teacher_comment; Es gibt nur 30 verschiedene Kurse und insgesamt 100 verschiedene Aufgaben.Resort bestimmte Spalte in Pandas Dataframe

Ich habe df.groupby(['assignment', 'teacher_comment_type']).count() einfach verwendet, um einen neuen Datenrahmen zu generieren, wobei ich jede teacher_comment_type, die eine gegebene Aufgabe jemals für jeden Schüler erhalten hat, auf der ganzen Linie - und auch, wie oft dieser Kommentartyp für eine bestimmte Aufgabe gegeben wurde. Ich möchte jetzt für jede assignment die Zählungsspalte lokal verwenden, aber ich kämpfe darum.

Mit anderen Worten, gerade jetzt, ich habe:

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 

Und so weiter. Automatisch wird die zweite Spalte lokal alphabetisch sortiert (lokal, ich meine für jeden Zuweisungsnamen in der linken Spalte). Aber ich möchte lokal nach dieser dritten Spalte neu sortieren - in der Reihenfolge von der größten zur kleinsten Nummer. Ist das sinnvoll? Ich habe vergeblich mit .sort_values herumgespielt (es wird die gesamte Struktur des Datenrahmens verändern, die "lokale" Integrität nicht beibehalten - die Organisation nach Zuweisungsname).

Danke.

Antwort

0

Verwenden value_counts statt

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 
Verwandte Themen