2016-08-01 22 views
0

Ich habe 3 Spalten in einem Datenrahmen, wie arbeiten:mit groupby mehr Spalten in Python

User_ID, Product_Category_1 und entsprechenden Kaufbetrag.

Ich versuche, basierend auf User_ID und Product_Category_1 zu gruppieren und den Durchschnitt des Kaufbetrags auszuwählen.

So Ausgang Datenrahmen wird: User_ID, Product_Category_1 und Avg_Purchase.

Dies ist für mich nicht funktioniert:

x=train_bk.groupby(["User_ID","Product_Category_1"],as_index=False)['Purchase'].transform('mean') 

Das ist mir eine Reihe des Mittelwert des Kaufs für jede Zeile gibt. Allerdings brauche ich nur die einzigartigen User_ID und Product_Category_1 Kombination

x1 = train_bk.select(Average(train_bk.User_ID), train_bk.Product_Category_1, 
      group_by=(train_bk.User_ID,train_bk.Product_Category_1)) 

ich die von SQL-Paket versucht zu halten. Es wird jedoch ein Fehler ausgegeben: "name 'Average' ist nicht definiert". Außerdem gibt es ein gutes Paket in Python, das eine SQL-Syntax ähnlich wie Teradata oder MYSQL hat.

Antwort

0

Ok, scheint dies zu funktionieren:

x = train_bk.groupby(["User_ID","Product_Category_1"],as_index=False)['Purchase'].mean()