ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python – pandas idxmax:在绑定的情况下返回所有行

2019-08-27 23:55:36  阅读:237  来源: 互联网

标签:argmax python performance pandas


我正在处理一个数据帧,其中每行按其概率加权.现在,我想选择具有最高概率的行,并且我使用pandas idxmax()来执行此操作,但是当存在tie时,它只返回绑定的第一行.就我而言,我希望得到所有相关的行.

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

例:

我的数据如下:

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(概率)的行:

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

标签:argmax,python,performance,pandas
来源: https://codeday.me/bug/20190827/1746154.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有