Объединение столбцов из нескольких файлов CSV в один файл и создание нескольких файлов CSV с помощью цикла for - PullRequest
0 голосов
/ 18 июня 2019

У меня есть 14 CSV-файлов, и у каждого есть 100 столбцов, я хочу извлечь первый столбец из каждого файла и скопировать его в один CSV-файл. Я должен сделать это для каждых 100 столбцов (например, следующий шаг - поместить второй столбец из каждого файла в файл CSV).

Что я пробовал раньше, так это код ниже, который идеально подходит для извлечения одного столбца, но я хочу поместить его в цикл, чтобы я получил 100 файлов одновременно, как я могу это сделать?

import csv
import itertools as IT

filenames = ['Sul-v1.csv', 'Sul-v2.csv','Sul-v3.csv', 'Sul-v4.csv', 'Sul-v5.csv', 'Sul-v6.csv', 'Sul-v7.csv', 'Sul-v8.csv', 'Sul-v9.csv', 'Sul-v10.csv', 'Sul-v11.csv', 'Sul-v12.csv', 'Sul-v13.csv', 'Sul-v14.csv']
handles = [open(filename, 'rb') for filename in filenames]    
readers = [csv.reader(f, delimiter=',') for f in handles]

with  open('combined.csv', 'wb') as h:
    writer = csv.writer(h, delimiter=',', lineterminator='\n', )
    for rows in IT.izip_longest(*readers, fillvalue=['']*2):
        combined_row = []
        for row in rows:
            row = row[:1] # select the columns you want
            if len(row) == 1:
                combined_row.extend(row)
            else:
                combined.extend(['']*2)
        writer.writerow(combined_row)

for f in handles:
    f.close()

Заранее спасибо!

1 Ответ

0 голосов
/ 18 июня 2019

Используйте панд.

Начните с загрузки всех CSV-файлов в один дата.(см. здесь )

Затем сохраните каждый столбец в новый CSV, выполнив цикл по столбцам и используя to_csv .

Убедитесь, что вы передалистолбец to_csv с использованием аргумента columns

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