たくさんのCSVファイルがあります(以下の例では2つだけです)。各CSVファイルには6つの列があります。各CSVファイルに移動し、最初の2つの列をコピーして、既存の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
これは機能します、きれいではありませんが、機能します。ただし、私には3つの小さな問題があります。
各CSVファイルを2回(各列に1回)開きますが、これはほとんどエレガントではありません。
ファイルを印刷すると、
combined.csv
各行の後に空の行が印刷されますか?combined.csv
少なくとも、最大のファイルと同じ数の行を含むファイルを提供する必要があります。私はその数が何であるかを本当に知らないので、それはちょっとひどいです
いつものように、どんな助けでも大歓迎です!
要求に応じて:1.csvは(モックデータ)のようになります
1,a
2,b
3,c
4,d
2.csvは次のようになります
5,e
6,f
7,g
8,h
9,i
Combined.csvファイルは次のようになります
1,a,5,e
2,b,6,f
3,c,7,g
4,d,8,h
,,9,i