Выберите только имя столбца из CSV-файлов без чтения всех данных, Python 3.6

Я хочу найти список столбцов, присутствующих в более чем 500 CSV-файлах. Только для чтения столбцы и поместить в кадр данных или список, а позже я хочу экспортировать в csv.


person Learnings    schedule 23.09.2017    source источник


Ответы (1)


pandas может легко извлечь только определенные столбцы и записать для вас новый CSV-файл:

import pandas as pd

data = pd.read_csv('input.csv', usecols=[1, 3], index_col=1)
data.to_csv('output.csv')

Если вы хотите извлечь одни и те же два столбца из нескольких файлов в один вывод, вы можете сделать следующее:

import pandas as pd
import glob

combined_data = pd.DataFrame()

for csv_file in glob.glob('*.csv'):
    data = pd.read_csv(csv_file, usecols=[1, 3], index_col=1, skiprows=1, header=None, names=['Col1', 'Col2'])
    combined_data = combined_data.append(data)

combined_data.to_csv('output.csv')

Это может потребовать настройки в зависимости от того, имеют ли ваши файлы заголовки и одинаковые имена столбцов.


Чтобы извлечь заголовки из всех файлов (без загрузки всего файла), вы можете просто использовать библиотеку CSV следующим образом:

import csv
import glob

with open('headers.csv', 'w', newline='') as f_headers:
    csv_headers = csv.writer(f_headers)

    for csv_file in glob.glob('input*.csv'):
        with open(csv_file, 'r', newline='') as f_csv:
            csv_headers.writerow([csv_file] + next(csv.reader(f_csv)))

Это также поставит имя файла в качестве первой записи в каждой строке.

person Martin Evans    schedule 23.09.2017
comment
спасибо, но я хотел имя столбца, это также помогает для моих других требований. - person Learnings; 23.09.2017
comment
Таким образом, вы пытаетесь создать файл CSV, содержащий все строки заголовков из ваших 500 файлов? - person Martin Evans; 23.09.2017
comment
Я просто хочу знать столбцы, присутствующие во всех 500 CSV-файлах. - person Learnings; 23.09.2017
comment
Я добавил простую программу чтения CSV, которая должна помочь. Он добавляет имя файла в качестве первой записи в каждой строке. - person Martin Evans; 23.09.2017
comment
спасибо это я хотел - person Learnings; 23.09.2017