Ich habe eine Tabelle von Benutzern mit, wie viel sie jeden Tag ausgeben. Ich möchte sie in nur einer Zeile pro Benutzer neu anordnen, wobei die Spalten angeben, wie viel sie jeden Tag ausgeben.Kombinieren mehrerer Pandas Zeilen in einen einzigen Datensatz mit verschiedenen Überschriften
user_id day spending
111 mon 15
111 tues 20
111 weds 25
....
122 mon 44
122 tues 34
122 weds 90
122 thurs 26
....
Ich mag
die Tabelle in das Formular zum Einsturzid mon tues weds thurs fri sat sun
111 15 20 25 16 48 32 40
122 44 34 90 26 20 22 53
Gerade jetzt dieser Code initialisiert die täglichen Spalten (Mo, Di, vermählt ... etc) als Nullen, dann setzt es die tägliche Ausgaben Daten in jeder Spalte in der for-Schleife, alle außer die Ausgaben an diesem Tag sollten Nullen sein, was zu einer diagonalen Matrix sucht Tabelle. Dann summiere ich die ganze Sache, um alle Werte in einem einzigen Zeilensatz zu füllen. Gerade jetzt dieser Code funktioniert auf einer kleinen Datenmenge, aber die for-Schleife ist eine lange Zeit auf meinem vollständigen Datensatz unter:
for i,hr in zip(np.arange(len(df)),df['day']):
df.ix[i,hr]=df1_subset.ix[i,"spending"]
# aggregate the users by id and dates
df = df.groupby('id').sum()
Was für eine Art und Weise, dass ich noch einige Pandas-korrekte Operationen verwenden könnte, wo ich das vermeiden kann for-Schleife oder machen Sie das schneller?
Danke.