как сохранить ответ в массиве numpy и использовать его для создания таблицы Excel? - PullRequest
1 голос
/ 15 января 2020

У меня есть программа, которая содержит две функции: test() и outputEval() и одну основную функцию. test() функция содержит 3 списка значений, и я просто возвращаю их. Функция outputEval () берет возвращаемое значение из тестовой функции и сохраняет их в массиве numpy, и я использую этот массив для создания кадра данных для создания таблицы Excel. Мой код:

import numpy as np
import pandas as pd
def test():
    list1 = [1, 21, 12, 24, 54, 6]
    list2 = [65, 65, 3, 2, 5, 8]
    list3 = [65, 78, 87, 5, 2, 3]
    modelInput = {
        'list1': list1, 'list2': list2, 'list3': list3
    }
    return modelInput

def outputEval(modelInput):
    solArray = np.zeros(3)
    for i in range(0, solArray.shape[0]):
        solArray[i][0] = pd.Series(modelInput['list1'])
        solArray[i][1] = pd.Series(modelInput['list2'])
        solArray[i][2] = pd.Series(modelInput['list3'])

    df=pd.DataFrame(solArray, columns=['list1', 'list2', 'list3'])
    df.to_excel('testingfile.xlsx')
def main():
    testing = test()
    run = outputEval(testing)

main()

ошибка, которую я получаю после запуска

TypeError: 'numpy.float64' object does not support item assignment

желаемый вывод

list1  list2  list3
 1      65     65
 21     65     78 
 12     3      87
 24     2      5  
 54     5      2
 6      8      3

1 Ответ

0 голосов
/ 15 января 2020

Вам не нужно это for l oop

Вы можете использовать:

def outputEval(modelInput):
    df=pd.DataFrame(modelInput, columns=['list1', 'list2', 'list3'])
    df.to_excel('testingfile.xlsx')
    #update...
    sol = df.to_numpy()
    print(sol)

Используйте df.to_excel('testingfile.xlsx', index=False), если вам не нужен столбец index .

Обновление 1

def outputEval(modelInput):
    sol = np.c_[list(modelInput.values())].T
    df=pd.DataFrame(sol, columns=['list1', 'list2', 'list3'])
    df.to_excel('testingfile.xlsx', index=False)

Обновление 2 с использованием from itertools import chain

    modelInput = list(chain(modelInput1.values(), modelInput2.values()))
    print(modelInput)
    sol = np.c_[list(modelInput)].T

Обновление 3

sol = np.r_[np.r_[list(modelInput1.values())].T, np.r_[list(modelInput2.values())].T]    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...