У меня есть несколько .csv
файлов в папке, и они имеют одинаковую структуру.
Первые два столбца содержат два значения k1
и k2
, третий столбец содержит числовое значение.
Я хочу перебрать эти файлы и объединить их в новый csv
, где у меня будут первые два столбца для K1
и K2
, а затем n
столбцов, по одному для каждого из n
файлов.
Это мое решение:
import glob
import csv
import os
def get_data(filename):
'''function to read the data form the input csv file to use in the analysis'''
with open(filename, 'r') as f:
reader = csv.reader(f)
result = {tuple(row[:2]): row[2] for row in reader}
return result
path='mypath'
for infile in glob.glob(os.path.join(path, '*.csv')):
print ("Current File Being Processed is: " + infile)
#use split to seperate the path and name of the file
(PATH, FILENAME) = os.path.split(infile)
all_data=[]
#adds the data from the csv file to a blank list so it can be operated on
all_data.extend(get_data(infile))
result = {}
for dic in all_data:
for key in (dic.viewkeys() | result.keys()):
if key in dic: result.setdefault(key, []).append(dic[key])
else: result.setdefault(key, []).append(0)
with open('mypath', 'w') as csvfile:
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
writer.writeheader()
for data in result:
writer.writerow(data)
но возвращается
Traceback (most recent call last):
File "C:\Users\Desktop\p.py", line 26, in <module>
for key in (dic.viewkeys() | result.keys()):
AttributeError: 'tuple' object has no attribute 'viewkeys'