我认为这个问题最好通过以下方式进行可视化,给定一个数据框:
val_1 true_val ID label
-0.0127894447 0.0 1 A
0.9604560385 1.0 2 A
0.0001271985 0.0 3 A
0.0007419337 0.0 3 B
0.3420448566 0.0 2 B
0.1322384726 1.0 4 B
所以我想要的是:
label ID_val_1_second_highest ID_true_val_highest
A 3 2
B 4 4
我想获取val_1第二高的值和true_val(总是等于1.0)最高的值相对应的ID,然后返回每个标签的两个对应ID。
有没有人知道怎么做?我尝试过:
``` result_at_one = result.set_index('ID').groupby('label').idxmax() ```
这可以让我得到两者的最高值,但我只想要真实标签的最高值,同时获取val_1变量的第二/第三等高的值。
有人把这个链接作为答案: Pandas: Get N largest values and insert NaN values if there are no elements 但是,如果使用那种方法,我需要按标签进行分组。因此,在这种情况下,输出将变为:
label true_id top1_id_val_1 top2_id_val_1 top3_id_val_1
A 2 2 3 1
B 4 2 4 3
有人知道怎么做吗?