Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多索引排序特定字段_Python_Sorting_Pandas_Dataframe_Multi Index - Fatal编程技术网

Python 多索引排序特定字段

Python 多索引排序特定字段,python,sorting,pandas,dataframe,multi-index,Python,Sorting,Pandas,Dataframe,Multi Index,我通过对分组数据帧运行series.descripe()获得了pandas中的多索引。如何通过modelName.mean对这些系列进行排序,并且只保留特定字段? 这个 对它们进行排序,但保留所有其他字段,如count。我怎么能只保留平均值和标准值 编辑 这是df的文本表示 kappa modelName biasTotal

我通过对分组数据帧运行series.descripe()获得了pandas中的多索引。如何通过
modelName.mean对这些系列进行排序,并且只保留特定字段?
这个

对它们进行排序,但保留所有其他字段,如count。我怎么能只保留
平均值
标准值

编辑 这是df的文本表示

                                             kappa
modelName                                         
biasTotal                          count  5.000000
                                   mean   0.526183
                                   std    0.013429
                                   min    0.507536
                                   25%    0.519706
                                   50%    0.525565
                                   75%    0.538931
                                   max    0.539175
biasTotalWithDistanceMetricAccount count  5.000000
                                   mean   0.527275
                                   std    0.014218
                                   min    0.506428
                                   25%    0.520438
                                   50%    0.529771
                                   75%    0.538475
                                   max    0.541262
lightGBMbiasTotal                  count  5.000000
                                   mean   0.531639
                                   std    0.013819
                                   min    0.513363

您可以这样做:

数据:

解决方案:

In [78]: df.loc[pd.IndexSlice[:, ['mean','std']], :]
Out[78]:
                        0
level_1 level_0
a       mean     4.400000
        std      2.509980
b       mean     5.000000
        std      3.316625
c       mean     4.000000
        std      2.915476
d       mean     6.000000
        std      3.391165
设置:

df = (pd.DataFrame(np.random.randint(0,10,(5,4)),columns=list('abcd'))
        .describe()
        .stack()
        .reset_index()
        .set_index(['level_1','level_0'])
        .sort_index()
)

当我向df添加一个.sortlevel(1)时,整个df都被排序了,但我更希望实现的是,只有mean用于sorting@GeorgHeiler,您能否以文本形式发布您的DF(例如,
print(summary)
)的输出,以便我可以复制它?@MaU当然,请查看编辑。正如您所看到的,默认情况下,我的df的平均值并不像您的示例中那样排序。我想按平均值订购,但保留“堆叠性”,例如与相应的mean@GeorgHeiler,恐怕您必须对索引(所有级别)进行排序,或者使用
df.reset_index()
并像处理普通(单级别索引)DFI一样工作,请参见。但是,重置索引每行生成2条记录,例如,一条记录平均值,一条记录std,在一个单独的列中,称为level_1。我如何仅按平均值对该列进行排序,但保持这两行之间的关系,例如,具有最大平均值、伴随方差、下一个平均值和下一个方差,。。。
In [78]: df.loc[pd.IndexSlice[:, ['mean','std']], :]
Out[78]:
                        0
level_1 level_0
a       mean     4.400000
        std      2.509980
b       mean     5.000000
        std      3.316625
c       mean     4.000000
        std      2.915476
d       mean     6.000000
        std      3.391165
df = (pd.DataFrame(np.random.randint(0,10,(5,4)),columns=list('abcd'))
        .describe()
        .stack()
        .reset_index()
        .set_index(['level_1','level_0'])
        .sort_index()
)