У меня есть большое количество CSV-файлов / фреймов данных, которые слишком велики, чтобы хранить их вместе в памяти. Тем не менее, я заметил, что размер столбцов в данных фреймах различен. Мои столбцы - перестановки "ACGT" (последовательности ДНК). Я следовал инструкциям этого вопроса о том, как написать несколько CSV-файлов с разными столбцами, однако я получаю следующую ошибку: AttributeError: у объекта 'str' нет атрибута 'keys'. Я нашел этот вопрос для устранения ошибки, однако я не уверен, где редактировать код, чтобы сделать объект 'line' словарем. Я также обеспокоен тем, что мои csv-файлы, имеющие столбец индекса без значения заголовка, могут испортить мой код, или может возникнуть проблема с форматом моих имен полей (str, полученных из перестановок). Если есть способ объединить несколько CSV-файлов с разными на другом языке, я исправлю это, однако у меня возникли проблемы с и этим вопросом .
import glob
import csv
import os
mydir = "test_csv/"
file_list = glob.glob(mydir + "/*.csv") # Include slash or it will search in the wrong directory!!
file_list
import itertools
fieldnames = []
for p in itertools.product('ACGT', repeat=8):
fieldnames.append("".join(p))
for filename in file_list:
with open(filename, "r", newline="") as f_in:
reader = csv.reader(f_in)
headers = next(reader)
with open("Outcombined.csv", "w", newline="") as f_out:
writer = csv.DictWriter(f_out, fieldnames=fieldnames)
for filename in file_list:
with open(filename, "r", newline="") as f_in:
reader = csv.DictReader(f_in)
for line in headers:
writer.writerow(line)