Python 如何匹配一列中的唯一元素并列出第二列中的相应值
我有一个以下格式的文件:Python 如何匹配一列中的唯一元素并列出第二列中的相应值,python,r,unix,text,bioinformatics,Python,R,Unix,Text,Bioinformatics,我有一个以下格式的文件: ENSG00000087510 ENST00000201031 TFAP2C transcription_factor protein_coding 其中,每列由一个选项卡分隔 如您所见,共有5列。第1列是冗余ID的列表,每个ID都与第2列中的另一个唯一ID相匹配。第1列中的冗余ID分散在整个文件中 我尝试使用以下命令从第一列生成ID的唯一列表,但不知道如何将其与第二列匹配 cat Chr20_gene_transcript_namelist.txt | cu
ENSG00000087510 ENST00000201031 TFAP2C transcription_factor protein_coding
其中,每列由一个选项卡分隔
如您所见,共有5列。第1列是冗余ID的列表,每个ID都与第2列中的另一个唯一ID相匹配。第1列中的冗余ID分散在整个文件中
我尝试使用以下命令从第一列生成ID的唯一列表,但不知道如何将其与第二列匹配
cat Chr20_gene_transcript_namelist.txt | cut-f 1 | sort | uniq
我想要一个包含两列的文件:第1列中的唯一ID和第2列中匹配的所有ID
例如:
我不知道如何在bash中实现,但由于您使用了python标记,下面是一个应该可以工作的脚本:
with open(<your_file>, 'r') as f:
lines = f.read().splitlines()
id_dict = {}
for line in lines:
elems = line.split()
if elems[0] in id_dict:
id_dict[elems[0]].append(elems[1])
else:
id_dict[elems[0]] = [elems[1]]
with open(<your_output_file>, 'w') as f:
for redundant_id, unique_ids in id_dict.items():
f.write('%s\t%s\n' % (redundant_id, unique_ids[0]))
for unique_id in unique_ids[1:]:
f.write('\t%s\n' % unique_id)
打开(,'r')作为f的:
lines=f.read().splitlines()
id_dict={}
对于行中的行:
elems=line.split()
如果id目录中的元素[0]:
id_dict[elems[0]]。追加(elems[1])
其他:
id_dict[elems[0]=[elems[1]]
以开放(,'w')作为f:
对于冗余的\u id,id目录项()中的唯一\u id:
f、 写入(“%s\t%s\n%”(冗余\u id,唯一\u id[0]))
对于unique_id[1:]中的unique_id:
f、 写入('\t%s\n'%unique\u id)
我不知道如何在bash中实现,但由于您使用了python标记,下面是一个应该可以工作的脚本:
with open(<your_file>, 'r') as f:
lines = f.read().splitlines()
id_dict = {}
for line in lines:
elems = line.split()
if elems[0] in id_dict:
id_dict[elems[0]].append(elems[1])
else:
id_dict[elems[0]] = [elems[1]]
with open(<your_output_file>, 'w') as f:
for redundant_id, unique_ids in id_dict.items():
f.write('%s\t%s\n' % (redundant_id, unique_ids[0]))
for unique_id in unique_ids[1:]:
f.write('\t%s\n' % unique_id)
打开(,'r')作为f的:
lines=f.read().splitlines()
id_dict={}
对于行中的行:
elems=line.split()
如果id目录中的元素[0]:
id_dict[elems[0]]。追加(elems[1])
其他:
id_dict[elems[0]=[elems[1]]
以开放(,'w')作为f:
对于冗余的\u id,id目录项()中的唯一\u id:
f、 写入(“%s\t%s\n%”(冗余\u id,唯一\u id[0]))
对于unique_id[1:]中的unique_id:
f、 写入('\t%s\n'%unique\u id)
我希望这更好?我希望这更好?