Читать текстовые (постельные) файлы, добавлять в них новый столбец, сохранять в файле csv

Я пытался прочитать 700 постельных файлов и сохранить их в один файл csv. У меня нет проблем с этой частью. Я должен добавить один столбец в каждый файл в виде штрих-кода, этот штрих-код является частью имени каждого файла (имя файла TCGA-02-0047-01A-01R-1849-01, часть штрих-кода TCGA-02-0047-01A), каждый файл состоит из 64000 строк. Это означает, что в столбце штрих-кода я повторяю одно и то же значение 67000 раз. Код, который я написал, работает, но я застрял в цикле for и не работает.

Это мой код:

import pyranges as pr
import pandas as pd
import os

H = ["chrom",  "chromStart", "chromEnd", "strand", "gene_symbol", "entrez_gene_id", "transcript_id" , "raw_count", "scaled_estimate", "normalized_count", "barcode"]
list = os.listdir("E:\\newdata")   
#extract the barcode 
code =[]
for f in list:
    x = '-'.join(f.split('-')[0:3])
    code.append(x)
print('2')  
 #find direction of each bed file
newList=[]
for i in range(len(list)):
    newList.append("E:\\newdata\\" + list[i])
print('3')  
#read the bed files one after another, save it in file and add barcode

for bed in newList: #bed file in newlist
    for n in code: #barcode for each bed files
        df = pr.read_bed(bed, as_df=True)
        df['barcode'] = n #add colum for each bed file
        filename = df.to_csv('E:\\data951.csv',mode ='a', header = H, index=False)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
329
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из вашего кода я предполагаю, что код относится к файлу. Таким образом, вы не должны использовать вложенные циклы (один для файлов и один для кодов), а один цикл и использовать код с тем же индексом. И файл CSV должен иметь только один заголовок вверху. Поэтому я бы использовал:

#read the bed files one after another, save it in file and add barcode
# create the csv file and add a header only on first file
header = H
mode = 'w'
for i, bed in enumerate(newList): #bed file in newlist and get its index for the code
    n = code[i]: # barcode associated with each bed files
    df = pr.read_bed(bed, as_df=True)
    df['barcode'] = n #add colum for each bed file
    header = None    # will append without any header for following files
    mode = 'a'
    df.to_csv('E:\\data951.csv',mode=mode, header = header, index=False)

Большое спасибо, это было так полезно, и моя проблема решена.

sotoodeh.n 17.12.2020 11:06

@sotoodeh.n: Спасибо за комментарий. Но если это решило вашу проблему, вы должны принять ответ (галочка слева). Таким образом, будущие читатели узнают, что проблема решена.

Serge Ballesta 17.12.2020 11:09

Другие вопросы по теме