我有一个像这样的大型数据集:
##fileformat=VCFv4.2
##fileDate=20201231
##source=PLINKv1.90
##contig=<ID=1,length=188260454>
##contig=<ID=10,length=85155382>
##contig=<ID=11,length=61676533>
##contig=<ID=12,length=36989714>
##contig=<ID=13,length=43784426>
##contig=<ID=14,length=94600040>
##contig=<ID=15,length=92851205>
##contig=<ID=16,length=88959756>
##contig=<ID=17,length=80722365>
##contig=<ID=18,length=82634671>
##contig=<ID=19,length=62678559>
##contig=<ID=2,length=121349915>
##contig=<ID=20,length=65336538>
##contig=<ID=3,length=121351672>
##contig=<ID=4,length=109462228>
##contig=<ID=5,length=96758658>
##contig=<ID=6,length=87227659>
##contig=<ID=7,length=100781181>
##contig=<ID=8,length=97562725>
##contig=<ID=9,length=85788908>
##contig=<ID=21,length=58983846>
##contig=<ID=22,length=50925167>
##contig=<ID=23,length=55555792>
##contig=<ID=24,length=48279991>
##contig=<ID=25,length=40282582>
##contig=<ID=26,length=43147527>
##contig=<ID=27,length=40254630>
##contig=<ID=28,length=47348126>
##contig=<ID=29,length=34775913>
##contig=<ID=30,length=31395421>
##contig=<ID=31,length=26000291>
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT A1 A2 A3 A4
1 235 1 A C . . PR GT 1|1 1|1 0|0 0|1
1 1000 2 G C . . PR GT 1|1 0|1 0|1 1|1
1 1256 3 T G . . PR GT 1|1 1|1 0|1 1|1
1 5000 4 T A . . PR GT 0|1 0|0 0|1 1|1
1 6234 5 A T . . PR GT 0|1 1|1 1|0 0|1
1 77453 6 A C . . PR GT 1|0 1|0 1|0 1|0
1 84004 7 C G . . PR GT 0|1 1|0 0|1 0|0
1 123658 8 A T . . PR GT 1|1 0|0 1|1 0|0
1 432567 9 T A . . PR GT 0|1 1|1 0|0 0|0
1 567432 10 A G . . PR GT 0|0 1|1 0|1 1|1
1 1234542 11 C A . . PR GT 0|1 0|0 0|0 0|0
要读取此数据帧,我必须使用以下命令:
snp = pd.read_csv("Imputed.vcf",delimiter=r"\s+",header=0,skiprows=35)
实际上,我想跳过带有标签的行(行包含“#”),而不计算这些行。这种情况有什么办法吗?
答案 0 :(得分:6)
如果需要删除所有以 #
开头的行,请使用 comment='#'
:
snp = pd.read_csv("Imputed.vcf", sep=r"\s+",comment='#', header=None)
如果需要 2 个或更多字符的注释,现在不支持。
可能的想法是预处理:
import csv
#preprocessing
def get_row():
skipped = []
with open('Imputed.vcf', 'r') as csvfile:
reader = csv.reader(csvfile)
for i, row in enumerate(reader):
if row[0].strip()[:2] == '##':
skipped.append(i)
return skipped
skip = get_row()
print (skip)
snp = pd.read_csv("Imputed.vcf", sep=r"\s+",skiprows=skip)