2017-11-03 3 views
1

Ich habe Pandas Datenrahmen mit den folgenden Spalten:Aggregate Reihen in Pandas Dataframe

  1. VisitorID (einzigartig für jeden Benutzer - Cookies in Ihrem Browser)
  2. VisitNumber (1 = erste Besuch, 2 = zweiter Besuch und etc ...)
  3. TimeSpentOnVist (Besuchsdauer in Sekunden)
  4. Channel (der Referrer des Besuchs. Ex: Facebook, Google und Bing)
  5. Medientyp (gegen Entgelt oder organisch)

Die Besucher-ID für jeden Besuch wiederholt (1, 2, 3). Ich möchte es in Anbetracht des letzten Besuchs für den Kanal und den Medientyp aggregieren, aber gleichzeitig die Zeitpunkte aller Besuche zusammenfassen (zusammenfassen). Mein Ziel ist es, nach der Besucher-ID zu gruppieren, so dass es keine Duplizierung gibt.

Was ist der effizienteste Weg, um diese Aggregation in Pandas durchzuführen?

Antwort

3

IIUC

df.sort_values(['VisitNumber']).groupby('VisitorID').\ 
    agg({'TimeSpentOnVist':'sum','Channel':'last','Media type':'last'}) 
0

Wen beantwortet die Aggregation Frage, aber ich würde auch ein MultiIndex zu organisieren, um den Datenrahmen erstellen:

df.set_index(['VisitorID','VisitNumber']).sort_index()