【发布时间】:2014-05-02 16:45:08
【问题描述】:
我有数百个具有两个字段的 tsv 文件,一个公共密钥和一个唯一的样本 id:
==> test1.vmat <==
CHROM:POS:REF:ALT 144-93-02
1:14653:C:T 1
1:14677:G:A 1
1:14907:A:G 1
==> test2.vmat <==
CHROM:POS:REF:ALT 144-93-01
1:14653:C:T 1
1:14522:G:A 1
1:14907:A:G 1
我想使用字段“CHR:POS:REF:ALT”对所有文件执行外连接,以形成一个巨大的矩阵。两个文件的示例:
CHROM:POS:REF:ALT 144-93-02 144-93-01
1:14653:C:T 1.0 1.0
1:14522:G:A NA 1.0
1:14677:G:A 1.0 NA
1:14907:A:G 1.0 1.0
我使用下面的代码得到了上面的输出,但是我在遍历目录 (path/to/testN.vmat) 中的数百个 *tsv 文件时遇到了问题。如何将其修改为将目录中的所有单个 *tsv 文件合并为单个 tsv 文件的内容?
variant_field = "CHROM:POS:REF:ALT"
outfile = "everyone.vmat"
df1 = pandas.read_csv("path/to/test1.vmat", sep='\t', parse_dates=False)
df2 = pandas.read_csv("path/to/test2.vmat", sep='\t', parse_dates=False)
df3 = pandas.merge(df1,df2,on=variant_field, how='outer')
df3.to_csv(str(outfile), sep="\t", header=True, index=False, na_rep="NA", engine='python')
【问题讨论】: