计算pandas中每个多索引DataFrame列的最小值

时间:2015-02-18 05:34:38

标签: python pandas

我有一个具有以下结构的多索引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

1 个答案:

答案 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

多指数应该相同。

相关问题