我有一个像这样的数据框-
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
此数据帧是使用用户提供的Metric == {'auc'
创建的。我需要根据用户给定的指标值创建一个具有排名的新数据框,如上所示。
答案 0 :(得分:2)
如何使用布尔索引来提取所需内容,分配等级和排序:
(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
答案 1 :(得分:1)
使用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
答案 2 :(得分:0)
那这样的事情呢?
df[df.Metric == 'auc'].sort_values(by = 'Value', ascending = False)