基于变量对列进行排名

我有一个这样的数据框-


  Metric       Value         Model

f1_measure  0.854053454   Logistic_Regression

auc         0.927363382   Logistic_Regression

precision   0.871229558   Logistic_Regression

f1_measure  0.957372309   Random_Forest

auc         0.994050551   Random_Forest

precision   0.974012599   Random_Forest

f1_measure  0.823266765   Naive_Bayes

auc         0.91573591    Naive_Bayes

precision   0.83156611    Naive_Bayes

现在我想创建另一个数据框-


       Model_name         Rank      Metric

 

      Random_Forest          1        auc

      Logistic_Regression    2        auc

      Naive_Bayes            3        auc

 

'auc'此数据框是使用用户提供的Metric== 创建的。我需要创建一个新的数据框,其排名基于用户给定的指标值,如上所示。


阿晨1998
浏览 135回答 3
3回答

30秒到达战场

如何使用布尔索引来提取您需要的内容,分配排名和排序:(df[df.Metric=='auc']   .assign(Rank=lambda x: x['Value'].rank(ascending=False))   .sort_values('Rank'))输出:  Metric     Value                Model  rank4    auc  0.994051        Random_Forest   1.01    auc  0.927363  Logistic_Regression   2.07    auc  0.915736          Naive_Bayes   3.0

一只斗牛犬

用于boolean indexing过滤指标等于的数据框auc,然后用于Series.rank对列上过滤后的数据框进行排名Value,最后用于DataFrame.sort_values将数据框排序为Rankdf1 = df[df.Metric.eq('auc')]df1 = df1.assign(Rank=df1.pop('Value').rank(ascending=False)).sort_values(by='Rank')结果:# print(df1)  Metric                Model  Rank4    auc        Random_Forest   1.01    auc  Logistic_Regression   2.07    auc          Naive_Bayes   3.0:

慕哥6287543

像这样的事情怎么样:df[df.Metric == 'auc'].sort_values(by = 'Value', ascending = False)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python