Python tsv文件和基于源文件的列重命名之间的完全联接
我有176个Python tsv文件和基于源文件的列重命名之间的完全联接,python,bash,dataframe,Python,Bash,Dataframe,我有176个.tsv文件,这是基因比对的结果,如下所示: 目标识别码 长度 tpm ENST001 12 100 ENST001 9 5. 让我知道如果这个代码对你有效,没有这些文件很难测试 import re import os import sys import pandas as pd tpm_dict = {} for fn in os.listdir(sys.argv[1]): if re.match('.*\.tsv$', fn): header = fn
.tsv
文件,这是基因比对的结果,如下所示:
目标识别码
长度
tpm
ENST001
12
100
ENST001
9
5.
让我知道如果这个代码对你有效,没有这些文件很难测试
import re
import os
import sys
import pandas as pd
tpm_dict = {}
for fn in os.listdir(sys.argv[1]):
if re.match('.*\.tsv$', fn):
header = fn.replace('.tsv', '')
this_df = pd.read_csv(os.path.join(sys.argv[1], fn), sep='\t')
for i, row in this_df.iterrows():
try:
tpm_dict[row['target_id']][header] = row['tpm']
except KeyError:
try:
tpm_dict[row['target_id']] = {header: row['tpm']}
except:
print(f"Problem in {fn} at row {i}")
df = pd.DataFrame.from_dict(tpm_dict, orient='index')
df.to_csv('joined.tsv', sep='\t')
另存为tsvjoin.py
,然后运行python3 tsvjoin.py
编辑:输入错误你的目录结构是什么样的?文件名为srr1000001.tsv?这是正确的。模式为SRR*.tsv。为了清晰起见,我将把它添加到我的帖子中。谢谢阿尔伯特。但是,我收到一个错误
FileNotFoundError:[Errno 2]文件SRR1146093.tsv不存在:“SRR1146093.tsv”
。知道为什么吗?我的错,我在阅读的时候忘了附加目录。现在就试试。感谢您的快速回复和修复!我现在遇到了另一个错误TypeError:'str'对象不能解释为整数
我做了一些更改,您可以再试一次。我仍然得到相同的错误,不幸的是,加上一些新的错误<代码>类型错误:在处理上述异常期间,无法将“str”对象解释为整数,发生了另一个异常:。。。。。。。。KeyError:“tpm”