csvfile

у написать файл результатов в .csv. Я подготовил простой тестовый пример.

import numpy as np
data = {}
testdata = np.array([1,2,3,4,5])

data['set1'] = {'a': testdata, 'b': testdata, 'c': testdata}
data['set2'] = {'a2': testdata, 'b2': testdata, 'c2': testdata}
data['set3'] = {'a3': testdata, 'b3': testdata, 'c3': testdata}

Было бы здорово получить такой файл результатов:

Есть ли простой способ, который вы можете рекомендовать?

 sam11 окт. 2017 г., 20:41
docs.python.org/2/library/csv.html#csv.writer Вы пытались использоватьcsv модуль? Попробуйте несколько примеров, вы должны быть в состоянии выяснить.

Ответы на вопрос(1)

Решение Вопроса

а затем использоватьcsv Модуль для записи всего на лист Excel. Так жеdata дикт должен быть преобразован вOrderedDict поддерживать порядок последовательности.

Исходный код

import numpy as np
import csv
from collections import OrderedDict
from itertools import chain


data = {}

testdata = np.array([1,2,3,4,5])
data = OrderedDict(data)


a = {'a': testdata, 'b': testdata, 'c': testdata}
b = {'a2': testdata, 'b2': testdata, 'c2': testdata}
c = {'a3': testdata, 'b3': testdata, 'c3': testdata}

#covert inner dict to OrderedDict
data['set1'] = OrderedDict(sorted(a.items(), key=lambda x:x[0]))
data['set2'] = OrderedDict(sorted(b.items(), key=lambda x:x[0]))
data['set3'] = OrderedDict(sorted(c.items(), key=lambda x:x[0]))  

#collect second header
header2 = [data.get(k).keys() for k in data.keys()]

#get number of repetations for header1
header1_size = len(header2[0])

#get header1
header1 = sorted((data.keys())*header1_size)

#flatten list of list of header2
header2 = list(chain.from_iterable(header2))

#get rows from data dict
rows = zip(*[v2 for k1,v1 in data.items() for k2,v2 in v1.items() ]) 

#write header1,header2 and rows to excel /csv
with open('csvfile.csv','wb') as ofile:               
    wr = csv.writer(ofile, dialect='excel')
    wr.writerow(header1)
    wr.writerow(header2)
    wr.writerows(rows)

csvfile

Ваш ответ на вопрос