如何在 Python 中使用 idxmax() 函数选择具有相等列值的最大索引

How can I select maximum index with equal column values using idxmax() function in Python

提问人:Kriti 提问时间:10/19/2023 最后编辑:Kriti 更新时间:10/19/2023 访问量:48

问:

   pcn_no   treatment   score
1   101 3000    0.005804
2   101 5000    0.005804
3   101 8000    0.005804
5   101 12000   0.005804
8   101 25000   0.005804
12  101 50000   0.005804
4   101 10000   0.014521
6   101 15000   0.014521
7   101 20000   0.014521
9   101 30000   0.014521
10  101 35000   0.014521
11  101 40000   0.014521

在这里,我想选择最大行为 40,000,但使用下面的代码,我得到 10,000 作为最大行: x = '分数' df_all[x + '_max_line'] = df_all.loc[(df_all.groupby('pcn_no')[x].idxmax(),'治疗')]

Python Pandas 索引

评论

0赞 mozway 10/19/2023
预期产出是多少?

答:

0赞 Bimesh Perera 10/19/2023 #1

您的问题是由于使用 ,它给出了第一次出现的最高分数的索引。在 中,由于最高分数重复,因此您不一定获得该分数的最大“治疗”值。idxmax()dataframe

df_all = df_all.sort_values(by=['score', 'treatment'], ascending=[False, False])
df_all['score_max_line'] = df_all.groupby('pcn_no')['treatment'].transform('first')
0赞 Tanishq Chaudhary 10/19/2023 #2

由于 idxmax 返回最高分数的第一个匹配项,因此您可以简单地使用 反转该列,如下所示:[::-1]

...
x = 'score' 
df_all[x + '_max_line'] = df_all.loc[(df_all.groupby('pcn_no')[x][::-1].idxmax(),'treatment')]