使用python将二维数组转换为csv文件

时间:2016-12-09 16:32:50

标签: python csv

我想使用pyhton将我的python数组导出到csv文件。但是,我无法成功,有人帮我吗?我的示例数据和代码如下所示:

数组:

[[311.11324435763891, 459.35657654562112], [326.9993929036458, 488.02189410927855], [323.19149534625774, 455.74575749903551]]

我想生成一个类似的csv文件:

  

{empty} met1 met2 met3

     

seq1 311.11324435763891 326.9993929036458 323.19149534625774

     

seq2 459.35657654562112 488.02189410927855 455.74575749903551

我的草案代码是:

def writeCSVFile(outputfile,name_list):
    with open(outputfile, 'w') as csvfile:
        fieldnames = [' ' 'm1','m2','m3']
        writer = csv.DictWriter(csvfile, fieldnames)
        writer.writeheader()

        for x in name_list:
            writer.writerow({fieldnames[x]: )

2 个答案:

答案 0 :(得分:0)

如果您对使用pandas感到满意,那么这将有效:

import pandas as pd

df = pd.DataFrame([[311.11324435763891, 459.35657654562112], [326.9993929036458, 488.02189410927855], [323.19149534625774, 455.74575749903551]]).T

df.columns = ['m1', 'm2', 'm3']
df.index = ['seq1', 'seq2']
df.to_csv("output.csv", )

答案 1 :(得分:0)

这不是一个漂亮的解决方案,但可以一般性地解决问题。

def write_csv_file(filename, data):
    with open(filename, 'w') as f:
        data = list(zip(*data))
        head = ["{empty}"] + ["met{0}".format(i+1) for i in range(len(data[0]))]
        f.write(' '.join(head)+'\n')
        for n, i in enumerate(data):
            line  =["seq{0}".format(n+1)]+[str(x) for x in i]
            f.write(' '.join(line)+'\n')

<强>输出

{empty} met1 met2 met3
seq1 311.1132443576389 326.9993929036458 323.19149534625774
seq2 459.3565765456211 488.02189410927855 455.7457574990355