我有一个制表符分隔的文件,如下面的小示例:
小示例:
PB.5680.1 GS_Isoseq_HQ_transcript/9773
PB.5681.1 GS_Isoseq_HQ_transcript/9825,GS_Isoseq_HQ_transcript/9097,GS_Isoseq_HQ_transcript/9835,GS_Isoseq_HQ_transcript/9415,GS_Isoseq_HQ_transcript/9259,GS_Isoseq_HQ_transcript/9539
PB.5686.1 GS_Isoseq_HQ_transcript/9151,GS_Isoseq_HQ_transcript/9450我正在尝试解析该文件,并生成一个新文件,如下所示。事实上,每个文本/编号都应该在单独的行中,但如果它们来自输入文件中的同一行,它们将具有类似的第一列:
预期输出:
PB.5680.1 transcript/9773
PB.5681.1 transcript/9825
PB.5681.1 transcript/9097
PB.5681.1 transcript/9835
PB.5681.1 transcript/9415
PB.5681.1 transcript/9259
PB.5681.1 transcript/9539
PB.5686.1 transcript/9151
PB.5686.1 transcript/9450为此,我用python3编写了以下代码。
import pandas as pd
df = pd.read_csv('myfile.txt', sep='\t,_', engine='python')
column = []
for line in df:
dat = column.append(line)
dat.to_csv("outfile.txt", sep = "\t")但是它没有返回我想要得到的东西。你知道怎么修吗?
发布于 2020-01-22 04:44:40
为了方便起见,我们将PB.5680.1列命名为ID,另一列称为TRANSCRIPT。
我还将假设TRANSCRIPT列中的值都是字符串。因此,我们需要首先使每一行成为一个列表,然后分解该列表,最后将其导出。
#Making TRANSCRIPT values lists
df['TRANSCRIPT']= df['TRANSCRIPT'].apply(lambda x: x.split(','))
#Set index to ID and explode TRANSCRIPT
df2 = df.set_index('ID')['TRANSCRIPT'].explode()
#export to CSV
df2.to_csv('./allDone.csv', header = False)https://stackoverflow.com/questions/59844147
复制相似问题