为了账号安全,请及时绑定邮箱和手机立即绑定

基于变量对列进行排名

基于变量对列进行排名

阿晨1998 2023-02-22 16:40:44
我有一个这样的数据框-  Metric       Value         Modelf1_measure  0.854053454   Logistic_Regressionauc         0.927363382   Logistic_Regressionprecision   0.871229558   Logistic_Regressionf1_measure  0.957372309   Random_Forestauc         0.994050551   Random_Forestprecision   0.974012599   Random_Forestf1_measure  0.823266765   Naive_Bayesauc         0.91573591    Naive_Bayesprecision   0.83156611    Naive_Bayes现在我想创建另一个数据框-       Model_name         Rank      Metric       Random_Forest          1        auc      Logistic_Regression    2        auc      Naive_Bayes            3        auc 'auc'此数据框是使用用户提供的Metric== 创建的。我需要创建一个新的数据框,其排名基于用户给定的指标值,如上所示。
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

如何使用布尔索引来提取您需要的内容,分配排名和排序:


(df[df.Metric=='auc']

   .assign(Rank=lambda x: x['Value'].rank(ascending=False))

   .sort_values('Rank')

)

输出:


  Metric     Value                Model  rank

4    auc  0.994051        Random_Forest   1.0

1    auc  0.927363  Logistic_Regression   2.0

7    auc  0.915736          Naive_Bayes   3.0


查看完整回答
反对 回复 2023-02-22
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

用于boolean indexing过滤指标等于的数据框auc,然后用于Series.rank对列上过滤后的数据框进行排名Value,最后用于DataFrame.sort_values将数据框排序为Rank

df1 = df[df.Metric.eq('auc')]

df1 = df1.assign(Rank=df1.pop('Value').rank(ascending=False)).sort_values(by='Rank')

结果:


# print(df1)


  Metric                Model  Rank

4    auc        Random_Forest   1.0

1    auc  Logistic_Regression   2.0

7    auc          Naive_Bayes   3.0


查看完整回答
反对 回复 2023-02-22
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

像这样的事情怎么样:

df[df.Metric == 'auc'].sort_values(by = 'Value', ascending = False)


查看完整回答
反对 回复 2023-02-22
  • 3 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号