gpt4 book ai didi

python - Pandas idxmax : return all rows in case of ties

转载 作者:太空狗 更新时间:2023-10-30 02:36:44 27 4
gpt4 key购买 nike

我正在使用一个数据框,我在其中按概率对每一行进行加权。现在,我想选择概率最高的行,我正在使用 pandas idxmax() 来这样做,但是当有联系时,它只返回联系的第一行。在我的例子中,我想获取所有相关的行

此外,我这样做是作为一个研究项目的一部分,我正在处理数百万个如下所示的数据帧,因此保持快速是一个问题。

例子:

我的数据是这样的:

data = [['chr1',100,200,0.2],
['ch1',300,500,0.3],
['chr1', 300, 500, 0.3],
['chr1', 600, 800, 0.3]]

从这个列表中,我创建了一个 pandas 数据框,如下所示:

weighted = pd.DataFrame.from_records(data,columns=['chrom','start','end','probability'])

看起来像这样:

  chrom  start  end  probability
0 chr1 100 200 0.2
1 ch1 300 500 0.3
2 chr1 300 500 0.3
3 chr1 600 800 0.3

然后使用以下方法选择符合 argmax(probability) 的行:

selected =  weighted.ix[weighted['probability'].idxmax()]

当然会返回:

chrom          ch1
start 300
end 500
probability 0.3
Name: 1, dtype: object

有关系时是否有(快速)方法获取所有值?

谢谢!

最佳答案

嗯,这可能是您正在寻找的解决方案:

weighted.loc[weighted['probability']==weighted['probability'].max()].T
# 1 2 3
#chrom ch1 chr1 chr1
#start 300 300 600
#end 500 500 800
#probability 0.3 0.3 0.3

关于python - Pandas idxmax : return all rows in case of ties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52588298/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com