如何做pandas groupby([多列]),以便查找其结果

时间:2013-08-04 07:42:23

标签: group-by pandas multiple-columns statistics

我有两个数据帧:tr是训练集,ts是测试集。 它们包含列'uid'(user_id),'categ'(分类)和'response'。 'response'是我试图在ts中预测的因变量。

我正在尝试计算tr中的响应平均值,按列'uid'和'categ'分列:

avg_response_uid_categ = tr.groupby(['uid','categ']).response.mean()

这给出了结果但是(不合需要地)数据帧索引是MultiIndex。 (这是groupby(...,as_index = True)行为):

MultiIndex[--5hzxWLz5ozIg6OMo6tpQ  SomeValueOfCateg, --65q1FpAL_UQtVZ2PTGew  AnotherValueofCateg, ...

但我希望结果保留两列'uid','categ'并将它们分开。

我应该使用aggregate()代替groupby()吗? 尝试groupby(as_index=False)是没用的。

1 个答案:

答案 0 :(得分:0)

结果似乎有所不同,具体取决于您是否:

tr.groupby(['uid','categ']).response.mean()

或:

tr.groupby(['uid','categ'])['response'].mean()  # RIGHT