2

我有具有rounds以下结构的数据框(这是从另一个数据框中删除列的结果)(无法发布图片,抱歉):

----------------------------
|type|N|D|NATC|K|iters|time|
----------------------------
rows of data
----------------------------

我使用groupby所以我可以得到组的平均值,如下所示:

rounds = results.groupby(['type','N','D','NATC','K','iters'])
results_mean = rounds.mean()

我得到了我想要的手段,但我遇到了钥匙问题。数据框具有以下results_mean结构:

----------------------------
|    | | |    | |     |time|
|type|N|D|NATC|K|iters|    |
----------------------------
rows of data
----------------------------

唯一识别的键是time(我执行了results_mean.keys())。

我做错了什么?我该如何解决?

4

2 回答 2

7

在您的聚合数据中,time是唯一的列。其他的是指数。

groupby有一个参数as_index从文档中

as_index :布尔值,默认为 True

对于聚合输出,返回以组标签为索引的对象。仅与 DataFrame 输入相关。as_index=False 实际上是“SQL 风格”的分组输出

因此,您可以通过调用获得所需的输出

rounds = results.groupby(['type','N','D','NATC','K','iters'], as_index = False)
results_mean = rounds.mean()

或者,如果您愿意,您始终可以使用reset_index将索引转换为键。使用

rounds = results.groupby(['type','N','D','NATC','K','iters'])
results_mean = rounds.mean().reset_index()

也应该有预期的效果。

于 2015-04-14T11:09:50.743 回答
0

dataframes's由于使用该函数,我遇到了同样的丢失密钥的问题,group_by()我为该问题找到的答案是将 Dataframe 转换为 CSV 文件,然后读取此文件。

于 2020-01-15T00:40:16.033 回答