2016-08-01 177 views
0

我在数据框中有3列,如下所示:在Python中使用groupby多列

User_ID,Product_Category_1和对应购买金额。

我想根据User_ID和Product_Category_1进行分组,并选择购买金额的平均值。

因此,输出数据框将具有:User_ID,Product_Category_1和Avg_Purchase。

这不是为我工作:

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

这给了我一系列的购买各行的平均值。不过,我只需要保留独特的USER_ID和Product_Category_1组合

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)) 

这个我试过从SQL包。但它会抛出错误:“名称”平均“未定义”。在Python中有一个很好的包,它的SQL语法类似于Teradata或MYSQL。

回答

0

好了,这似乎是工作:

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