我有一堆 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 看起来像(模拟数据)
1,a
2,b
3,c
4,d
2.csv 看起来像
5,e
6,f
7,g
8,h
9,i
组合的.csv 文件应该看起来像
1,a,5,e
2,b,6,f
3,c,7,g
4,d,8,h
,,9,i