繁体   English   中英

如果数据集适合python中另一个数据集的范围,如何选择数据集的值?

[英]How to select values of a dataset if it fits in ranges of another dataset in python?

我有 2 个遗传数据集。 一个具有基因组范围的行,每个都分配了一个测量值,另一个是基因组上的特定位置。 我希望将第二个数据集与其行与落在第一个数据集的任何范围内的基因组位置相匹配。 它们必须在范围内并且在同一条染色体上。

例如:

dataset1:
Chromosome  Start  End   Score
    1       100    200     50
    1       200    250     10
    2       10     20000   40
    2       100    200     20
    3       100    200     10
dataset2:
Chromosome  Position
    1          150
    2          157
    2          1067
    3           5

将 dataset2 与 dataset1 的StartEnd范围内的位置匹配(并且具有相同的Chromosome )并为它们分配分数将给出:

Chromosome  Position     Score
    1          150         50
    2          157         20
    2          1067        40
    3           5          NA

染色体 2 上的位置匹配 2 个分数,因此需要复制以分配两个分数。 我通常在 R 中编写代码,并且不怎么使用 Python,我不知道从哪里开始在 Python 中执行此操作 - 是否有任何我应该考虑使用的函数可以做到这一点?

以下代码将给出数据集 2 的所有行,其中 Position 位于范围内,每个条件满足一行:

df = dataset2.merge(dataset1, on='Chromosome')
res = df[(df.Position >= df.Start) & (df.Position <= df.End)][['Chromosome', 'Position', 'Score']

print(res)

输出:

   Chromosome  Position  Score
0           1       150     50
2           2       157     40
3           2       157     20
4           2      1067     40

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM