【发布时间】:2016-03-25 20:01:17
【问题描述】:
Python 新手并试图弄清楚如何基于单个列 (item.id) 合并多个 CSV 文件,但我还想从每个文件中选择一个子集以包含在最终合并中。
每个 CSV 有 100 列,并且只需要选定的列。
我有我在下面编写的代码,但我确实需要一个 CSV 输出而不是创建多个文件。我有一个字段字典,因为输出必须有那些重命名的值。
import csv
from collections import OrderedDict
def processFile(source,fields):
src = ('C:/MyDirectory/{FILENAME}_original.csv').format(FILENAME=source)
dst = ('C:/MyDirectory/{FILENAME}_clean.csv').format(FILENAME=source)
s = open(src, newline="")
reader = csv.DictReader(s, delimiter=",",quotechar='"')
t = open(dst,"w",newline="")
writer = csv.writer(t,delimiter=",", quotechar='"', quoting=csv.QUOTE_MINIMAL)
headers = list(v for(k,v) in fields.items())
writer.writerow(headers)
next(reader) #Need to skip the 2nd row in every file - it has double headers
for row in reader:
content = list(row[k] for(k,v) in fields.items())
writer.writerow(content)
fieldsFI1 = OrderedDict([
('item.id','ItemId'),
('att1','Attribute1'),
('att2','Attribute2'),
])
fieldsFI2 = OrderedDict([
('item.id','ItemId'),
('att3','Attribute3'),
('att4','Attribute4'),
])
processFile(FI1,fieldsFI1)
processFile(FI2,fieldsFI2)
【问题讨论】: