将数组写入列中的 csv
Writing arrays to a csv in columns
我一直在尝试解决一个基本问题(并且一直是 Python 2.7,但没有解决。我有一个包含列标题的 csv 文件,例如:
a,b,c
1,2,3
1,2,3
1,2,3
这被保存为test1.csv
我已经设法获取每一列并将它们传递到一个数组中,因此每个列标题都在开头,后面是数据。然后我如何将其写回具有相同顺序和结构的新 csv 文件?
import csv
f = open('test1.csv','rb')
reader = csv.reader(f)
headers = reader.next()
print headers
column = {}
for h in headers:
column[h] = []
for row in reader:
for h,v in zip(headers,row):
column[h].append(v)
您可以像这样写入(和读取)数据,它使用 defaultdict
而不是普通字典来简化其构造:
from collections import defaultdict
import csv
with open('test1.csv', 'rb') as f:
reader = csv.reader(f)
header = next(reader)
columns = defaultdict(list)
for row in reader:
for col,value in zip(header, row):
columns[col].append(value)
num_rows = len(columns[header[0]])
# now write data back out in same order
with open('test2.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(
tuple(columns[col][row] for col in header) for row in xrange(num_rows))
我一直在尝试解决一个基本问题(并且一直是 Python 2.7,但没有解决。我有一个包含列标题的 csv 文件,例如:
a,b,c
1,2,3
1,2,3
1,2,3
这被保存为test1.csv
我已经设法获取每一列并将它们传递到一个数组中,因此每个列标题都在开头,后面是数据。然后我如何将其写回具有相同顺序和结构的新 csv 文件?
import csv
f = open('test1.csv','rb')
reader = csv.reader(f)
headers = reader.next()
print headers
column = {}
for h in headers:
column[h] = []
for row in reader:
for h,v in zip(headers,row):
column[h].append(v)
您可以像这样写入(和读取)数据,它使用 defaultdict
而不是普通字典来简化其构造:
from collections import defaultdict
import csv
with open('test1.csv', 'rb') as f:
reader = csv.reader(f)
header = next(reader)
columns = defaultdict(list)
for row in reader:
for col,value in zip(header, row):
columns[col].append(value)
num_rows = len(columns[header[0]])
# now write data back out in same order
with open('test2.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(
tuple(columns[col][row] for col in header) for row in xrange(num_rows))