【发布时间】:2022-01-21 14:44:32
【问题描述】:
在汇总某些内容后,我真的很难再次将表格整理成“正常”数据框。 我有一张这样的表格(列):
RnnSize EmbSize RnnLayer Epochs Alpha Eval Run Result
所以我使用该命令计算了多次运行的 Result 列的平均值和标准:
df.groupby(["RnnSize", "EmbSize", "RnnLayer", "Epochs", "Alpha", "Eval"]).agg({'Result': ['mean', 'std']})
输出是这样的 DataFrame:
Result
mean std
RnnSize EmbSize RnnLayer Epochs Alpha Eval
看起来有点像三层。
df.columns 输出以下多索引:
MultiIndex([( 'index', ''),
( 'RnnSize', ''),
( 'EmbSize', ''),
('RnnLayer', ''),
( 'Epochs', ''),
( 'Alpha', ''),
( 'Eval', ''),
( 'Result', 'std'),
( 'Result', 'std')],
)
我如何再次展平它,删除“结果”并将均值和标准置于与其余部分相同的“级别”? 有很多命令,如 reset_index、drop_level 等,但我还没有找到解决方法。这让我很困惑。
编辑:为了重现性,这是我的整个代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dfRuns = pd.read_csv("Results.csv", encoding="utf-8")
dfRuns
dfAv = dfRuns.copy()
dfAv = dfAv.groupby(["RnnSize", "EmbSize", "RnnLayer", "Epochs", "Alpha", "Eval"]).agg({'Result': ['mean', 'std']})
还有(缩短的)csv 文件 Results.csv:
RnnSize,EmbSize,RnnLayer,Epochs,Alpha,Eval,Run,Result
128,200,2,150,0.1,Precision,1,0.5940
128,200,2,150,0.1,Recall,1,0.5038
128,200,2,150,0.1,F1,1,0.5144
128,200,2,150,0.1,Precision,2,0.5851
128,200,2,150,0.1,Recall,2,0.4995
128,200,2,150,0.1,F1,2,0.5082
【问题讨论】:
-
能否将
print(df.columns)的结果添加到您的问题中? -
已添加,谢谢
-
根据您的编辑,有两个
stds。不应该是mean吗? -
我唯一能想到的是你运行的代码、你发布的代码、你得到的输出和你发布的输出之间的差异。无论如何,这并不重要。这个问题的答案还是一样的。
-
好的。诡异的。对不起。我刚刚重新打开了笔记本,现在代码工作正常。也没有双列。这很奇怪!
标签: python pandas group-by aggregation