Я пытаюсь объединить более 100 CSV-файлов с миллионами записей. Каждый CSV имеет несколько общих столбцов (но регистр имен столбцов отличается в некоторых примерах csvs, column1 или Column1), но некоторые из них совершенно разные. Как я могу объединить эти файлы со всеми общими столбцами, объединенными в один столбец, в то время как другие объединены в разные столбцы. Я пробовал другие решения, доступные для стекового потока, но загрузка данных, которую я хочу уменьшить, занимает около 1 часа. Я должен использовать наименьшее количество памяти.
import csv
csv_files = os.listdir('path')
directory = 'path'
print(csv_files)
print(len(csv_files))
print(directory)
import csv
fieldNames = []
for filename in csv_files:
filename = directory+filename
print(filename)
with open(filename, "r", newline="") as input_file:
reader = csv.DictReader(input_file)
headers = reader.fieldnames
for h in headers:
if h not in fieldNames:
fieldNames.append(h)
print(fieldNames)
with open(directory+"merged_csv.csv","w", newline="") as output_file:
writer = csv.DictWriter(output_file, fieldnames=fieldNames, extrasaction='ignore', delimiter=';')
for fileName in csv_files:
fileName = directory+fileName
with open(fileName,"r", newline="") as input_file:
row_count = sum(1 for row in input_file)
reader = csv.DictReader(input_file)
for line in reader:
writer.writerow(line)