2016-07-19 13 views
0

umformen habe ich eine Pandas Datenrahmen, die wie folgt aussieht, wo die Spalten sind wie folgt:eine Pandas Datenrahmen

  1. userid ist wie der Name
  2. schlägt
  3. name jeder
  4. api Ereignis ist
  5. count das ist Häufigkeit des Ereignisses

enter image description here

Also, ich möchte einen Datenrahmen, die wie folgt aussieht:

userid api_event_1   api_event_2   .... api_event_n 
17  count_of_apievent1 count_of_apievent2 .... count_of_apieventn 
2345  count_of_apievent1 count_of_apievent2 .... count_of_apieventn 
.    .     .     .  . 
.    .     .     .  . 

Antwort

3

Was

df.pivot(index='userid', columns='name', values='count_of_name') 

Wo df ist Ihre Pandas Datenrahmen (wird Nan einfügen, wenn einige Werte nicht existieren. wenn es zum Beispiel keine Zählung für das Ereignis A für Benutzer X)

für in 0 anstelle eines NaN Füllung, wo der Benutzer nicht über die api Veranstaltung haben, können Sie dies tun:

df.pivot(index='userid', columns='name', values='count_of_name').fillna(0) 
+0

Perfect :) Gibt es eine Möglichkeit, die' NaN's in '0's konvertieren, wo der Benutzer dieses bestimmte API-Ereignis nicht haben ? – Dawny33

+0

Verwenden Sie einfach df.pivot (...) .fillna (0) :) – SnoozeTime

+1

Großartig. Vorgeschlagen und bearbeitet für Sie, danke. – Dawny33

0

Verwendung Datenrahmen des transpose Methode:

print(df.transpose()) 

Oder einfach:

print(df.T) 
+1

Dies gilt nicht geben Sie mir die 'userid's als Zeilen :) – Dawny33

+0

@ Dawny33 Recht du bist – frist