我有数据框轮次(这是从另一个数据框中删除列的结果),具有以下结构(无法发布图片,抱歉):
----------------------------
|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_ dataframe具有以下结构:
----------------------------
| | | | | | |time|
|type|N|D|NATC|K|iters| |
----------------------------
rows of data
----------------------------
唯一识别的关键是“时间”(我执行了results_mean.keys()
)。
我做错了什么?我该如何解决?
答案 0 :(得分:4)
在汇总数据中,time
是唯一的列。其他的是指数。
groupby
有一个参数as_index
。 From the documentation:
as_index :布尔值,默认为True
对于聚合输出,返回以组标签作为索引的对象。仅与DataFrame输入相关。 as_index = False实际上是“SQL风格”分组输出
因此,您可以通过调用
获得所需的输出rounds = results.groupby(['type','N','D','NATC','K','iters'], as_index = False)
results_mean = rounds.mean()
或者,如果需要,您始终可以将索引转换为键by using reset_index
。使用
rounds = results.groupby(['type','N','D','NATC','K','iters'])
results_mean = rounds.mean().reset_index()
也应该有所期望的效果。
答案 1 :(得分:0)
由于使用了dataframes's
函数,我也遇到了丢失group_by()
键的问题,而我发现该问题的答案是将数据框转换为CSV文件,然后读取该文件。