在双索引Groupby Dataframe中查找具有最小值的内部索引

时间:2018-06-05 07:13:13

标签: python pandas

我有一个Pandas DataFrame,经过一些小组操作,如:

df.groupby(["dataset", "method"])["mae"].mean()

看起来像:

dataset             method
acute.a             AC        0.003516
                    EDX       0.028901
                    EDy       0.029160
                    HDX       0.040332
                    HDy       0.027015
acute.b             AC        0.003575
                    EDX       0.043130
                    EDy       0.029151
                    HDX       0.016335
                    HDy       0.003692
balance.1           AC        0.012195
                    EDX       0.019322
                    EDy       0.010015
                    HDX       0.018285
                    HDy       0.009011
balance.2           AC        0.179619
                    EDX       0.259377
                    EDy       0.497555
                    HDX       0.444765
                    HDy       0.435202
balance.3           AC        0.028937
                    EDX       0.034840
                    EDy       0.014509
                    HDX       0.037650
                    HDy       0.014660
breast-cancer       AC        0.005540
                    EDX       0.007067
                    EDy       0.006252
                    HDX       0.012012
                    HDy       0.005629
                                ...  

所以现在我想捕获method,它为每个dataset提供最小值(第三列)。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以将groupbyidxmin一起使用MultiIndex的值,每组minimal值,并选择元组的第二个值str[1]

s = df.groupby(["dataset", "method"])["mae"].mean()

s1 = s.groupby(level=0).idxmin().str[1]
print (s1)
dataset
acute.a           AC
acute.b           AC
balance.1        HDy
balance.2         AC
balance.3        EDy
breast-cancer     AC
Name: mae, dtype: object

如果还需要按loc选择值:

s2 = s.loc[s.groupby(level=0).idxmin()]
print (s2)
dataset        method
acute.a        AC        0.003516
acute.b        AC        0.003575
balance.1      HDy       0.009011
balance.2      AC        0.179619
balance.3      EDy       0.014509
breast-cancer  AC        0.005540
Name: mae, dtype: float64