Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python垂直编写csv?_Python_Csv - Fatal编程技术网

如何使用Python垂直编写csv?

如何使用Python垂直编写csv?,python,csv,Python,Csv,我想要这样设计的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"]} 我

我想要这样设计的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


如何实现这一点?

您将整个词典作为一行,为词典中的每个键编写,因此输出的数据量是指数级的;事实上,你为每一行添加一个标题只会增加伤害

您需要在此处将每个键值对视为一行:

with open("cyclesAndSignalChange.csv", 'wb') as csvfile:
    wr = csv.writer(csvfile, delimiter=' ')
    wr.writerow(['A', 'B', 'C', 'D'])
    for key, value in cycle_with_signal_change.items():
        wr.writerow([key, *value])
这将输出中的键值对;如果需要特定的排序,请先排序或使用有序的数据结构。

为什么不使用此任务?i、 e:

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

附言:
如果您需要花式的
------
只需通过编程将其附加到
csv
头之后,但请记住,在解析csv文件时,您必须跳过这一行。

使用pandas管理记录并将其导出为csv。为什么要“垂直”呢?你有3个序列,把它们写成行。你要找的是一个
转置
“我有一个这样的字典”-不,你没有有效的python字典
[“v1”:(“v11”、“v12”、“v13”),“v2”:(“v21”、“v22”、“v23”),“v3”:(“v31”、“v32”、“v33”)
。将方括号
[]
更改为大括号
{}
,您将拥有一本词典。您是否希望输出与您的文章完全相同的格式,使用相同的大量空格和
----
标题行分隔符?如果是这样的话,
csv
模块无论如何都是错误的工具。如果您需要它来进行数据分析,Pandas非常有用。只安装write a CSV文件是一件非常重要的事情,标准库已经很好地涵盖了这个用例。@MartijnPieters当前答案的最后一部分是我使用pandas的原因。所以
sorted()
是安装pandas的原因吗?哈哈,不是,为了简单起见,上面的代码在500毫秒以下运行,在这种情况下,我不认为导入
csv
模块有什么好处,假设pandas已经安装在OP系统上,OP没有义务使用csv模块。这是我想知道的一切,ty。“这是我想知道的一切,ty。”-我们总能学到新东西,特别是学会感谢那些试图帮助我们的人。回答得很好@Martijn,它符合op的要求。