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



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

您可以取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

对于多索引也应该如此。

最新更新