2017-03-28 1 views
0

Ich habe eine Pandas Dataframe mit einer Liste von Kursen, die versucht wurden: die ID des Schülers, die Kurs-ID, der Begriff, es wurde versucht, und die Note, die sie erhalten. Es sieht ein bisschen wie:Add repeat count Spalte zu einem Pandas Datenrahmen

Student ID  Course ID Academic Term Final Grade 
N99999   MAT101  201501   2.0 
N99999   MAT101  201509   2.5 
N11111   CHE101  201609   3.0 
N11111   PSY101  201601   0.0 
N11111   PSY101  201701   2.0   

Ich bin an ihren Qualitäten zu analysieren und ob die Schüler verbesserte sich um einen Kurs zu wiederholen.

so zu tun, würde Ich mag eine ‚Versuch‘ Spalte hinzuzufügen, in dem die Zeile mit dem niedrigsten Zeitwert für jede kombinierten Kurs und ID-Nummer würde

Student ID  Course ID Academic Term Final Grade Attempt 
N99999   MAT101  201501   2.0   1 
N99999   MAT101  201509   2.5   2 
N11111   CHE101  201609   3.0   1 
N11111   PSY101  201601   0.0   1 
N11111   PSY101  201701   2.0   2 
ein 1, die nächste 2 usw. erhalten

Wie würde ich das machen?

Vielen Dank.

Antwort

3

Es sieht so aus, als ob Sie nach einer Standard-Partition suchen. Es gibt mehrere Möglichkeiten, dies zu tun, aber ich habe es wie folgt gemacht. Versuchen Sie die folgenden (beachten Sie, ich verän/einen Teil der Daten kondensiert):

df 

Ausgang:

student_id course_id academic_term final_grade 
0  n999 mat101  201501   2.0 
1  n999 mat101  201509   2.5 
2  n111 che101  201609   3.0 
3  n111 psy101  201601   0.0 
4  n111 psy101  201701   2.0 

Eingang

df['attempt'] = df.sort_values('academic_term').groupby(['student_id', 'course_id'], sort=False).cumcount()+1 

Ausgang:

student_id course_id academic_term final_grade attempt 
0  n999 mat101  201501   2.0  1 
1  n999 mat101  201509   2.5  2 
2  n111 che101  201609   3.0  1 
3  n111 psy101  201601   0.0  1 
4  n111 psy101  201701   2.0  2 
Verwandte Themen