我正在尝试“清理”一些数据 - 我正在创建一个我需要保留的频道字典,然后我有一个if
块来创建一个具有正确舍入的第二个字典。
字典看起来像这样:
{'time, s': (imported array), 'x temp, C':(imported array),
'x pressure, kPa': (diff. imported array).....etc}
每个导入的数组都是1-d。
我在看this example,但我没有完全解析它,所以我最终得到了我想要的东西。
我想要的输出是一个csv文件(不管分隔符是空格还是逗号等),第一行是键,后续行只是值。
我觉得我缺少的是如何正确使用地图功能。
另外,我想知道我在使用DictWriter
时是否使用DictReader
。
这是我最初的尝试:
with open((filename), 'wb') as outfile:
write = csv.DictWriter(outfile, Fieldname_order)
write.writer.writerow(Fieldname_order)
write.writerows(data)
答案 0 :(得分:1)
编辑:在此示例中,data
是一个词典列表。 csv中的每一行都包含每个键的一个值。
使用标题行和数据行编写字典:
with open(filename, 'wb') as outfile:
writer = csv.DictWriter(outfile, fieldnames)
writer.writeheader()
writer.writerows(data)
要将数据作为字典读入,您需要使用DictReader
:
with open(filename, 'r') as infile:
reader = csv.DictReader(infile)
data = [row for row in reader]
答案 1 :(得分:1)
DictWriter
的API与您拥有的数据结构不匹配。 DictWriter
需要词典列表。你有一份清单。
您可以使用普通csv.writer
:
my_data = {'time, s': [0,1,2,3], 'x temp, C':[0,10,20,30],
'x pressure, kPa': [0,100,200,300]}
import csv
with open('outfile.csv', 'w') as outfile:
writer = csv.writer(outfile)
writer.writerow(my_data.keys())
writer.writerows(zip(*my_data.values()))
这将按任意顺序写入列,哪个顺序可能会从运行更改为运行。使订单保持一致的一种方法是用以下内容替换最后两行:
writer.writerow(sorted(my_data.keys()))
writer.writerows(zip(*(my_data[k] for k in sorted(my_data.keys()))))