我有一个具有以下结构的多索引DataFrame:
metric1 metric2
experiment1 experiment2 experiment1 experiment2
run1 1.2 1.5 0.2 0.9
run2 2.1 0.7 0.4 4.3
如何计算每列的最小值(最大值,平均值等)并获取DataFrame,如下所示:
metric1 metric2
experiment1 experiment2 experiment1 experiment2
run1 1.2 1.5 0.2 0.9
run2 1.6 0.9 0.3 3.1
run3 2.1 0.7 0.4 4.3
min 1.2 0.7 0.2 0.9
max 2.1 1.5 0.4 4.3
答案 0 :(得分:4)
您可以使用min,max和mean然后使用pd.concat将所有内容拼接在一起。您需要转置(T)然后转置回来以使数据帧以您想要的方式连接。
In [91]: df = pd.DataFrame(dict(exp1=[1.2,2.1],exp2=[1.5,0.7]), index=["run1", "run2"])
In [92]: df_min, df_max, df_mean = df.min(), df.max(), df.mean()
In [93]: df_min.name, df_max.name, df_mean.name = "min", "max", "mean"
In [94]: pd.concat((df.T, df_min, df_max, df_mean), axis=1).T
Out[94]:
exp1 exp2
run1 1.20 1.5
run2 2.10 0.7
min 1.20 0.7
max 2.10 1.5
mean 1.65 1.1
多指数应该相同。