过滤列和排名熊猫

我的数据框是 -


      Metric       Value              Model

0   Accuracy        87.608760       Logistic_Regression

1   Neg_log_loss    -0.332951       Logistic_Regression

2   F1_measure      0.854182        Logistic_Regression

3   AUC             0.927378        Logistic_Regression

4   Precision       0.871396        Logistic_Regression

5   Recall          0.837687        Logistic_Regression

6   Accuracy        96.433245       Random_Forest

7   Neg_log_loss   -0.105780        Random_Forest

8   F1_measure      0.958133        Random_Forest

9   AUC             0.994008        Random_Forest

10  Precision       0.974733        Random_Forest

11  Recall          0.942097        Random_Forest

12  Accuracy        84.836008       Naive_Bayes

13  Neg_log_loss   -0.917701        Naive_Bayes

14  F1_measure      0.823289        Naive_Bayes

15  AUC             0.915744        Naive_Bayes

16  Precision       0.831528        Naive_Bayes

17  Recall          0.815300        Naive_Bayes

metric ='AUC'


现在我想选择 Metric 列('AUC')最高的模型。在这种情况下,它将打印 model_nameRandom_Forest


弑天下
浏览 112回答 4
4回答

MM们

使用,Series.eq创建一个布尔掩码,然后使用此掩码以及Series.idxmax获取指标所在index列中的最大值,最后使用此索引获取相应的:ValueAUCModelind =df.loc[df['Metric'].eq('AUC'), 'Value'].idxmax()model = df.loc[ind, 'Model']结果:print(model)'Random_Forest'

拉丁的传说

除了其他答案,您还可以考虑df按max()所有'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']

慕妹3146593

干得好:df.loc[df.Metric == 'AUC', ['Value', 'Model']].max()['Model']## -- End pasted text --Out[1]: 'Random_Forest'

慕容森

如果你想用基础知识来做,那么: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'  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python