【发布时间】:2019-03-27 20:59:43
【问题描述】:
我有一个包含许多分隔值的大文本文件。但是文本文件的值由空格和分号分隔。下面是在 Unix 中使用 Less 命令的一些行的样子:
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT
chr7 149601 MERGED_DEL_2_39754 T . 141.35 . AC=0;AF=0.00;AN=2;DP=37;MQ=37.00;MQ0=0;1000gALT=<DEL>;AF1000g=0.09
chr7 149616 rs190051229 C . 108.65 . AC=0;AF=0.00;AN=2;DP=35;MQ=37.00;MQ0=0;1000gALT=T;AF1000g=0.00
chr7 149628 rs3814456 A . 129.31 . AC=0;AF=0.00;AN=2;DP=37;MQ=37.00;MQ0=0;1000gALT=G;AF1000g=0.14
chr7 149634 rs146001818 G T 1375.63 . AC=2;AF=1.00;AN=2;BaseQRankSum=0.456;DP=39;Dels=0.00;FS=0.000;HRun=0;HaplotypeScore=0.9997;MQ=37.00;MQ0=0;MQRankSum=1.641;QD=35.27;ReadPosRankSum=1.459;1000gALT=T;AF1000g=0.01
我希望能够用分号替换 chr7 旁边的空格。然后我想在POS值的某个范围内选择行,例如:149601到149628(前三行),这样我就可以计算出AF100g在这个范围内的总值(本例中前三行是0.24) )。
我该怎么做?
【问题讨论】:
-
用分号替换空格的目的是什么?你可以看看
pandas;它对于处理结构化数据非常方便。 -
嗨,fiixxer。 pandas 如何帮助我处理这种类型的文件?
-
不确定文件格式是什么,但看起来 Pandas 肯定是要走的路。
-
第一部分很简单,您可以使用替换方法,但您能否针对问题的第二部分更具体一些?
-
萨拉,谢谢你的建议。对于第二部分,我想扫描每一行并跟踪 POS 的值(第 1 行,POS = 149601),同时对 AF100g 的值求和(第 1 行,该值为 AF1000g=0.09)。当我达到 30 或更少的差异时,我想停止扫描。这是第 1 行 149601 和第 3 行 149628 的 POS 值之间的差异。
标签: python whitespace