我想要一个像这样设计的CSV:
A B C D
------ ----- ----- -----
v1 v11 v12 v13
v2 v21 v22 v23
v3 v31 v32 v33
我有这样的字典:
{"v1": ["v11", "v12", "v13"], "v2": ["v21", "v22", "v23"], "v3": ["v31", "v32", "v33"]}
我已经尝试过了:
with open("cyclesAndSignalChange.csv", 'wb') as csvfile:
wr = csv.DictWriter(csvfile, cycle_with_signal_change.keys(), delimiter = ' ')
for i in cycle_with_signal_change:
wr.writeheader()
wr.writerow(cycle_with_signal_change)
但是这只给了我一个1GB的大文件,而我的数据就像是1MB。
我怎样才能做到这一点?
答案 0 :(得分:1)
您正在为字典中的每个键编写整个字典,因此您输出的是指数量的数据;您为每行添加标题 只会增加损坏。
您需要在此处将每个键值对视为一行:
NavigationEnd
这将输出arbitrary order中的键值对;如果您需要具有特定排序,请先排序或使用有序数据结构。
答案 1 :(得分:0)
为什么不使用pandas
执行此任务?即:
import pandas as pd
test = {"v1": ("v11", "v12", "v13"), "v2": ("v21", "v22", "v23"), "v3": ("v31", "v32", "v33")}
df = pd.DataFrame.from_items(test.items(), orient='index', columns=['B','C','D'])
df.index.name = 'A'
df.to_csv("test.csv", sep='\t', encoding='utf-8')
test.csv
A B C D
v1 v11 v12 v13
v2 v21 v22 v23
v3 v31 v32 v33
PS:
如果您需要花哨 ------ ----- ----- -----
,只需在csv
标题后以编程方式附加它,但请记住,在解析csv文件时,您必须跳过此行。