首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python3中重新组织文本文件的内容

在python3中重新组织文本文件的内容
EN

Stack Overflow用户
提问于 2020-01-21 23:19:38
回答 1查看 18关注 0票数 0

我有一个制表符分隔的文件,如下面的小示例:

小示例:

代码语言:javascript
复制
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

我正在尝试解析该文件,并生成一个新文件,如下所示。事实上,每个文本/编号都应该在单独的行中,但如果它们来自输入文件中的同一行,它们将具有类似的第一列:

预期输出:

代码语言:javascript
复制
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编写了以下代码。

代码语言:javascript
复制
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")

但是它没有返回我想要得到的东西。你知道怎么修吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-22 04:44:40

为了方便起见,我们将PB.5680.1列命名为ID,另一列称为TRANSCRIPT。

我还将假设TRANSCRIPT列中的值都是字符串。因此,我们需要首先使每一行成为一个列表,然后分解该列表,最后将其导出。

代码语言:javascript
复制
#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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59844147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档