У меня есть некоторый код, который дает вывод через несколько циклов for в виде нескольких списков, и я хочу записать вывод в файл Excel или CSV, используя pandas excel writer.
from pulp import *
from openpyxl import load_workbook
import pandas as pd
import numbers
from pulp import solvers
import xlwt
P=[4.645885257, 4.481959238, 4.160581972, 2.893299763, 2.746552049, 2.762327167, 2.785312466, 2.782704044,\
2.761575576, 2.790301008, 2.826271593, 2.98196142, 3.106517237, 3.049694785, 2.841111886, 2.469119048,\
2.424998603, 2.482937879, 2.541880038, 2.544940077, 2.526766508, 2.539441678, 2.60810043, 2.782490319]
X=[-50, -40, -30, -20, -10, 0, 10, 20, 30, 40]
S=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150]
x=10
s=16
n=24
F=[[0 for j in range(x)] for i in range(s)]
def xyz():
Fbar=list()
Xbar=list()
Mega=[22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
for k in Mega:
for f in F:
try:
FFF=max([x for x in f if isinstance(x, numbers.Number)])
XXX=X[f.index(max([x for x in f if isinstance(x, numbers.Number)]))]
Fbar.append(FFF)
Xbar.append(XXX)
except ValueError:
FFF="NA"
Fbar.append(FFF)
Xbar.append(FFF)
for i in range(s):
for j in range(x):
if 150>=(S[i]+X[j])>=S[Xbar.index(max([x for x in Xbar if isinstance(x, numbers.Number)]))]:
FFFFF=(S[i]+X[j])/10
F[i][j]=-X[j]*P[k]+Fbar[int(FFFFF)]
if 150<(S[i]+X[j])<S[Xbar.index(max([x for x in Xbar if isinstance(x, numbers.Number)]))]:
F[i][j]="NA"
Xbar=list()
for f in F:
try:
FFF=max([x for x in f if isinstance(x, numbers.Number)])
XXX=X[f.index(max([x for x in f if isinstance(x, numbers.Number)]))]
Fbar.append(FFF)
Xbar.append(XXX)
except ValueError:
FFF="NA"
Fbar.append(FFF)
Xbar.append(FFF)
print(Xbar)
df= pd.DataFrame(Xbar)
writer= pd.ExcelWriter('C:\Fourth Term @ Dal\Project\Directive studies\output.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startcol=0, startrow=1, header=False, index=True)
workbook= writer.book
writer.save()
xyz()
Вот как выглядит вывод на печать:
[-50, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[40, 40, 30, 20, 10, -50, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50]
[40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0, -10, -20, -30, -40, -50]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[40, 40, 30, 20, 10, 0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0, -10, -20, -30, -40]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0, -10, -20, -30, -40, -50]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0, -10, -20, -30, -40]
[40, 40, 40, 40, 30, 20, 10, 0, -10, -20, -30, -40, -50, -50, -50, -50]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 20, 10, 0]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
[0, -10, -20, -30, -40, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50]
А вот что я получил в excel (output.xlsx):
0 0
1 -10
2 -20
3 -30
4 -40
5 -50
6 -50
7 -50
8 -50
9 -50
10 -50
11 -50
12 -50
13 -50
14 -50
15 -50
Я только что получил последний список из нескольких списков из вывода на печать, скопированного в файл excel, но мне нужен полный вывод (Xbar в приведенном выше коде), который нужно скопировать в файл excel. Заранее спасибо. :)