0

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

我正在尝试计算按列划分的responsein的平均值,并且:truidcateg

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)是没有用的。

4

1 回答 1

0

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

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

或者:

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

即,您是对单个系列还是对包含单个系列的 DataFrame 进行切片。相关:按标签选择的 Pandas 有时会返回 Series,有时会返回 DataFrame

于 2013-08-04T07:55:03.247 回答