У меня есть куча CSV файлов (только два в примере ниже). Каждый файл CSV имеет 6 столбцов. Я хочу зайти в каждый файл CSV, скопировать первые два столбца и добавить их в качестве новых столбцов в существующий файл CSV.
До сих пор я:
import csv
f = open('combined.csv')
data = [item for item in csv.reader(f)]
f.close()
for x in range(1,3): #example has 2 csv files, this will be automated
n=0
while n<2:
f=open(str(x)+".csv")
new_column=[item[n] for item in csv.reader(f)]
f.close()
#print d
new_data = []
for i, item in enumerate(data):
try:
item.append(new_column[i])
print i
except IndexError, e:
item.append("")
new_data.append(item)
f = open('combined.csv', 'w')
csv.writer(f).writerows(new_data)
f.close()
n=n+1
Это работает, это не очень, но это работает. Однако у меня есть три незначительных раздражения:
-
Я открываю каждый файл CSV дважды (один раз для каждого столбца), который вряд ли является элегантным
-
Когда я печатаю файл
combined.csv
, он печатает пустую строку после каждой строки? -
Я должен предоставить файл
combined.csv
, который содержит по крайней мере столько строк в нем, как самый большой файл, который у меня может быть. Так как я действительно не знаю, что это за число, это что-то отстойное
Как всегда, любая помощь очень ценится!!
В соответствии с запросом: 1.csv выглядит как (mock data)
1,a
2,b
3,c
4,d
2.csv выглядит как
5,e
6,f
7,g
8,h
9,i
файл comb.csv должен выглядеть как
1,a,5,e
2,b,6,f
3,c,7,g
4,d,8,h
,,9,i