小编Pra*_*ras的帖子

pandas idxmax:如果有关系则返回所有行

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

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

例子:

我的数据如下所示:

data = [['chr1',100,200,0.2],
    ['ch1',300,500,0.3],
    ['chr1', 300, 500, 0.3],
    ['chr1', 600, 800, 0.3]]
Run Code Online (Sandbox Code Playgroud)

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

weighted = pd.DataFrame.from_records(data,columns=['chrom','start','end','probability'])
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

  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
Run Code Online (Sandbox Code Playgroud)

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

selected =  weighted.ix[weighted['probability'].idxmax()]
Run Code Online (Sandbox Code Playgroud)

哪个当然返回:

chrom          ch1
start          300
end            500
probability    0.3
Name: 1, dtype: object
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

python performance pandas argmax

7
推荐指数
2
解决办法
4560
查看次数

pandas 按范围合并间隔

我有一个 pandas 数据框,如下所示:

  chrom  start  end  probability   read
0  chr1      1   10         0.99  read1
1  chr1      5   25         0.99  read2
2  chr1     15   25         0.99  read2
3  chr1     30   40         0.75  read4
Run Code Online (Sandbox Code Playgroud)

我想要做的是合并具有相同染色体(chrom 列)且坐标(开始,结束)重叠的间隔。在某些情况下,如果多个间隔彼此重叠,则即使它们不重叠,也会存在应该合并的间隔。请参阅上述示例中的第 0 行和第 2 行以及下面的合并输出

对于那些合并的元素,我想对它们的概率(概率列)进行求和,并计算“读取”列中的唯一元素。

使用上面的示例将导致以下输出,请注意行 0,1 和 2 已合并:

 chrom  start  end  probability  read
0  chr1      1   20         2.97     2
1  chr1     30   40         0.75     1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在使用 pybedtools merge 来执行此操作,但事实证明,执行数百万次(我的情况)时速度很慢。因此,我正在寻找其他选择,而 pandas 是显而易见的选择。我知道使用 pandas groupby可以对要合并的列应用不同的操作,例如nuniquesum,这是我需要应用的操作。尽管如此,pandas groupby 仅合并具有精确“chrom”、“start”和“end”坐标的数据。

我的问题是我不知道如何使用 pandas 根据坐标(chrom、start、end)合并行,然后应用求和和 …

python bioinformatics pandas

5
推荐指数
1
解决办法
5283
查看次数

标签 统计

pandas ×2

python ×2

argmax ×1

bioinformatics ×1

performance ×1