计算 pandas 中多索引 DataFrame 每列的最小值
Calculate minimum value for each column of multi-indexed DataFrame in 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
您可以取最小值、最大值和平均值,然后使用 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
应该与多索引一样工作。
我有一个具有以下结构的多索引 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
您可以取最小值、最大值和平均值,然后使用 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
应该与多索引一样工作。