Следующий модуль использует список glob
, чтобы получить список всех файлов в текущей папке формы X*.csv
, то есть все файлы CSV, начиная с x
. Для каждого найденного файла он сначала пропускает строку заголовка (необязательно), а затем загружает все оставшиеся строки, используя трюк zip()
, чтобы транспонировать список строк в список столбцов.
Для каждого столбца он преобразует каждую ячейку в целое и суммирует значения, деля их на количество найденных элементов, тем самым давая среднее значение для каждого столбца. Затем он записывает значения в свой выходной result.csv
в формате filename, av_col1, av_col2
и т.д.:
import glob
import csv
with open('result.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
for filename in glob.glob('X*.csv'):
print (filename)
with open(filename, newline='') as f_input:
csv_input = csv.reader(f_input)
header = next(csv_input)
averages = []
for col in zip(*csv_input):
averages.append(sum(int(x) for x in col)/len(col))
csv_output.writerow([filename] + averages)
Так что, если вы имели XY0001.csv
содержащий:
Col1,Col2,Col3
6,1,10
2,1,20
5,2,30
result.csv
будет записана следующим образом:
XY0001.csv,4.333333333333333,1.3333333333333333,20.0
Протестировано с использованием Python 3.5.2
Возможный дубликат [Импорт нескольких файлов csv в pandas и объединение в один DataFrame] (http://stackoverflow.com/questions/20906474/import-multiple-csv-files-into-pandas-and-concatenate-into- один-dataframe) – Guido