Как прочитать один и тот же столбец из нескольких файлов и собрать его в массив - PullRequest
0 голосов
/ 29 июня 2019

У меня есть 9 CSV-файлов, каждый из которых содержит одинаковое количество столбцов (61), а также одинаковые заголовки столбцов.Файлы в основном являются продолжением друг друга.Каждый столбец относится к считыванию сигнала, который был записан в течение длительного периода времени и, следовательно, разделен на несколько файлов.Мне нужно построить график собранных данных для каждого столбца.Для этого я подумал, что я буду читать по одному столбцу за раз из всех файлов, сохранять данные в массив и отображать их в зависимости от времени.Поскольку загрузка данных слишком велика, система берет чтение каждые 5 секунд в течение месяца, я хочу читать данные каждые 30 минут, что равняется чтению 1 строки на 362 строки.

Я попытался построить все без пропуска строк, и это занимает вечность из-за загрузки данных.

file_list = glob.glob ('*. Csv') cols = [0,1] # добавить дополнительные столбцы здесь

df = pd.DataFrame ()

дляf в file_list:

df = df.append(
    pd.read_csv(f, delimiter='\s+', header=None, usecols=cols),
    ignore_index=True,    
)

arr = df.values ​​

Это то, что я пытался читать только определенные столбцы из нескольких файлов, но я получаю это сообщение: «Протоколы не соответствуют столбцам,ожидаемые столбцы, но не найденные: [1] "

1 Ответ

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

команда ниже выполнит параллельное чтение с последующей конкатенацией. Предполагая, что file_list содержит список файлов, которые можно прочитать с помощью функции read_file ниже

import multiprocessing as mp


def read_file(file):
    return pd.read_csv(file)


pool = mp.Pool(mp.cpu_count())  # one worker per CPU. You can try other things
df = pd.concat(pool.map(read_file, file_list)
pool.terminate()
pool.join()
...