我有CSV文件:
id1, id2, value
2.1, 53.2, 0
2.1, 53.2, 1
2.1, 53.2, 3
2.1, 53.2, 8
3.3, 52.5, 0
3.3, 52.5, 6
3.3, 52.5, 9
3.3, 52.5, 12
我想做的是:
产生的CSV
id val1 val2 val3 val4
2.1 53.2, 0, 1, 3, 8
3.3 52.5, 0, 6, 9, 12
编码6小时后我决定问...我使用了dicReader csvReader等...我尝试将它加载到列表中,使用集合但没有任何作用......
答案 0 :(得分:0)
我建议创建一个defaultdict
来存储每个条目list
的值,其中包含每个匹配行的value
单元格。通过查找list
的{{1}} s的最大长度来创建标题行,然后迭代字典并将每个条目写为一行:
value
答案 1 :(得分:0)
import csv
reader = csv.reader(open('in.csv'), delimiter=',', quoting=csv.QUOTE_NONE)
header = next(reader, None)
data = [(k1.strip()+' '+k2.strip(),v.strip()) for k1,k2,v in reader]
data = dict(((k1, [v for k2,v in data if k1 == k2]) for k1 in set(zip(*data)[0])))
with open('out.csv', 'w') as outfile:
writer = csv.writer(outfile)
writer.writerow(['id', 'val1', 'val2', 'val3', 'val4'])
for key in sorted(data.keys()):
writer.writerow([key] + data[key])