我有一个文件叫做snp.txt文件看起来像这样:
chrom chromStart chromEnd name strand observed
chr1 259 260 rs72477211 + A/G single
chr1 433 433 rs56289060 + -/C insertion
chr1 491 492 rs55998931 + C/T single
chr1 518 519 rs62636508 + C/G single
chr1 582 583 rs58108140 + A/G single
我有第二份文件基因.txt在
^{pr2}$我想要的最终结果是:输出.txt在
chrom chromStart chromEnd name strand observed tf_title tf_score
chr1 259 260 rs72477211 + A/G NFKB1 123
chr1 433 433 rs56289060 + -/C IRF4 234
chr1 491 492 rs55998931 + C/T BCL3 231
chr1 518 519 rs62636508 + C/G TCF12 12
chr1 582 583 rs58108140 + A/G BAD170 89
我想做的关键是基因.txt并检查snp.txt文件在由chrom、chromStart和chromEnd建立的同一区域中。在
例如:
在第一排snp.txt文件 rsid rs72477211位于位置259和260之间的chr1上。在
现在在基因.txt,NFKB1也在chr1上,但在位置200和270之间, 这意味着rsidrs72477211位于NFKB1区域,因此在输出txt中注明了这一点。在
在使用pandas merge函数时我无法做到这一点,我甚至不知道从哪里开始。 文件非常大,因此循环效率非常低。 有人能帮忙吗?谢谢!在
如果它适合内存,您可以使用
outer
方法将两个数据帧outer
仅基于chrom
列,然后通过执行范围包含数学来过滤结果:最终可以删除重复列:
^{pr2}$相关问题 更多 >
编程相关推荐