我有两个文件,文件1如下:
#query_name KEGG_KOs
PROKKA_00019 K00240
PROKKA_00020 K00246
PROKKA_00022 K02887
文件2:
Geneid Chr Count
PROKKA_00019 k141_1000050 102
PROKKA_00020 k141_1000050 132
PROKKA_00021 k141_1000054 36
如果文件1中的“#query_name”与文件2中的“Geneid”匹配,则要创建如下所示的文件3:
Geneid KEGG_KOs Chr Count
PROKKA_00019 K00240 k141_1000050 102
PROKKA_00020 K00246 k141_1000050 132
我还不能创建file3,到目前为止,我已经写了以下内容,但还不能让它工作。其他选项可以使用pandas.DataFrame.join,但我可以告诉你,我只需要一个简单的脚本。任何帮助都将不胜感激,谢谢。你知道吗
filenames =['file1.txt', 'file2.txt']
with open('file3.txt', 'w') as collated:
with open('1.txt', 'r') as genes:
with open('2.txt', 'r') as counts:
if '#query_name' in genes == 'Geneid' in counts:
for line1, line2 in zip(genes, counts):
print(line1.strip(), line2.strip(), file=collated)
以下是使用熊猫的解决方案:
输入:
合并数据框的输出:
第2行和第3行只是读入txt文件(我假设它们是制表符分隔的)并将它们保存为数据帧(df1和df2)。在第4行,我使用query name和Geneid列合并df1和df2,然后删除query name列。我将输出保存为csv,然后删除索引(0,1)。如果要将合并的数据帧保存为制表符分隔的文件,只需将最后一行更改为:
merged_df.to_csv('output.txt', sep='\t', index=False)
如果你得到一个keyerror,那一定意味着你的文件格式可能有点不稳定(有空格和制表符的混合)。此代码应适用于:
输入:
输出:
相关问题 更多 >
编程相关推荐