реорганизация содержимого текстового файла в python3 - PullRequest
0 голосов
/ 21 января 2020

У меня есть файл, разделенный табуляцией, как этот маленький пример:

маленький пример:

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")

но это не возвращает того, что я пытаюсь получить. ты знаешь как это исправить?

1 Ответ

0 голосов
/ 21 января 2020

Мы собираемся дать столбцам с PB.5680.1 идентификатор имени, а другой столбец будет называться 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...