![](/img/trans.png)
[英]How to select parts of a dataset where a criteria is met in another dataset in 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 的Start
和End
范围内的位置匹配(并且具有相同的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.