2016-09-22 8 views
2

Ich habe ein DataFrame mit einem Index, der SubjectID und eine Spalte Visit genannt wird. Themen haben mehrere Besuche und entweder einen ganzzahligen Wert oder eine N/A für Value1 und Value2. Ich möchte die Zeilen zusammenfassen, die die gleiche SubjectID und die gleiche Visit Nummer haben.Pandas, die Zeilen mit demselben Wert und demselben Index zusammenführen

Hier ist mein Datenrahmen:

SubjectID Visit Value1 Value2  
B1   1   1.57  N/A 
B1   1   N/A  1.75 
B1   2   N/A  1.56 

ich will es wie folgt aussehen:

Subject ID Visit  Value1 Value2 
B1   1   1.57  1.75 
B1   2   N/A  1.56 

ich versuche groupby() zu verwenden, um dieses Problem zu lösen, aber ich bin nicht sicher, wie damit es sowohl den Index als auch die Werte in der Spalte Visit berücksichtigt.

Antwort

3

Sie können groupby.first oder groupby.last verwenden, um den ersten/letzten Nicht-Null-Wert für jede Spalte innerhalb der Gruppe abzurufen. Für die Beispieldaten wäre der Ausgang für beide Verfahren die gleiche sein:

df = df.groupby(['SubjectID', 'Visit']).first().reset_index() 

Die resultierende Ausgabe:

SubjectID Visit Value1 Value2 
0  B1  1 1.57 1.75 
1  B1  2  NaN 1.56 
+0

Thank you so viel, das hat super funktioniert – MScar

Verwandte Themen