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

过滤列和排名熊猫

过滤列和排名熊猫

弑天下 2023-02-15 17:28:30
我的数据框是 -      Metric       Value              Model0   Accuracy        87.608760       Logistic_Regression1   Neg_log_loss    -0.332951       Logistic_Regression2   F1_measure      0.854182        Logistic_Regression3   AUC             0.927378        Logistic_Regression4   Precision       0.871396        Logistic_Regression5   Recall          0.837687        Logistic_Regression6   Accuracy        96.433245       Random_Forest7   Neg_log_loss   -0.105780        Random_Forest8   F1_measure      0.958133        Random_Forest9   AUC             0.994008        Random_Forest10  Precision       0.974733        Random_Forest11  Recall          0.942097        Random_Forest12  Accuracy        84.836008       Naive_Bayes13  Neg_log_loss   -0.917701        Naive_Bayes14  F1_measure      0.823289        Naive_Bayes15  AUC             0.915744        Naive_Bayes16  Precision       0.831528        Naive_Bayes17  Recall          0.815300        Naive_Bayesmetric ='AUC'现在我想选择 Metric 列('AUC')最高的模型。在这种情况下,它将打印 model_nameRandom_Forest
查看完整描述

4 回答

?
MM们

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

使用,Series.eq创建一个布尔掩码,然后使用此掩码以及Series.idxmax获取指标所在index列中的最大值,最后使用此索引获取相应的:ValueAUCModel

ind =df.loc[df['Metric'].eq('AUC'), 'Value'].idxmax()

model = df.loc[ind, 'Model']

结果:


print(model)


'Random_Forest'




查看完整回答
反对 回复 2023-02-15
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

除了其他答案,您还可以考虑dfmax()所有'Metric'行对您进行分组:

df.groupby(['Metric'], as_index=False)['Value','Model'].max()

然后你也可以.query()为“AUC”指标的“模型”列:

df.groupby(['Metric'], as_index=False)['Value','Model'].max().query('Metric == "AUC"')['Model']


查看完整回答
反对 回复 2023-02-15
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

干得好:


df.loc[df.Metric == 'AUC', ['Value', 'Model']].max()['Model']


## -- End pasted text --

Out[1]: 'Random_Forest'


查看完整回答
反对 回复 2023-02-15
?
慕容森

TA贡献1853条经验 获得超18个赞

如果你想用基础知识来做,那么:


empty_value_list=[]


for i,j in zip(df['Metric'],df['Value']):

    if i=='AUC':

        empty_value_list.append(j)


max_value=max(empty_value_list)


for i,j,k in zip(df['Metric'],df['Value'],df['Model'])

    if i=='AUC' and j==max_value:

        print(k)

      

Out[1]: 'Random_Forest'  


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信