提问人:Kriti 提问时间:10/19/2023 最后编辑:Kriti 更新时间:10/19/2023 访问量:48
如何在 Python 中使用 idxmax() 函数选择具有相等列值的最大索引
How can I select maximum index with equal column values using idxmax() function in Python
问:
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(),'治疗')]
答:
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')]
评论