2017-04-01 3 views
0

Ich bin neu zu lernen, Pandas und lief heute über dieses Problem:Kombinieren x Reihen basierend auf Schlüssel in Pandas

Ich baue eine einfache df der Gesundheitsstatistiken sammelt, und jede Zeile steht für einen Tag der Daten pro Benutzer. Ich möchte den Gewichtsverlust jedes einzelnen Benutzers im Datenrahmen sehen.

Hier ist ein Beispiel meiner Datenrahmen:

_id  _rev body_mass calories date name sleep steps team token ua_id 
xxxx yyyy 60   3100 4/1/2017 user1 7  2800 t2  xxxx 123423 
xxxx yyyy 58   3300 4/1/2017 user2 6  2900 t1  xxxx 123439 
xxxx yyyy 45   3300 4/2/2017 user2 6  3300 t1  xxxx 123439 

Was würde Ich mag eine neue df mit diesen Informationen erstellt:

weight loss  name 
0    user1 
13   user2 
+1

Aber alle Daten sind gleich. Woher wissen wir, was die * erste * Messung war? –

+0

Sorry, ich habe vergessen, die 3. Reihe zu ändern, 3. Reihe wäre 04.04.2017 – ssabour

Antwort

0

zunächst den Datenrahmen von Benutzernamen und Datum sortiert wird, so dass sich für jeden Benutzer die erste Zeile auf die früheste Messung bezieht:

df_sorted = df.sort_values(['name','date']) 

Dann Gruppe die Zeilen von Benutzernamen und erhalten die erste (früheste) und letzte (jüngste) Messung:

start = df_sorted.groupby('name').first()['body_mass'] 
end = df_sorted.groupby('name').last()['body_mass'] 

nun den Unterschied erhalten:

end - start 

Das Ihr Ergebnis ist.

#name 
#user1  0 
#user2 -13 
#Name: body_mass, dtype: int64 
+0

Vielen Dank! Ich finde heraus, wie mächtig Pandas täglich sind :). – ssabour

Verwandte Themen