Как экспортировать последовательность выводов в лист Excel в Python 3? - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть следующий код Python, который дает два набора числовых результатов. Я хочу использовать вывод для моих вычислений. После каждого запуска кода я вручную копировал вывод в таблицу Excel, что занимает много времени. Я хочу экспортировать числовые значения, сгенерированные двумя командами печати, в один лист Excel. Мой код

c,mu,fe,lam,r=1,1,20,0.9,0.1
LT=map(lambda x:x/fe,range(0,401))
for fg in LT:
    f=fg-(1-r)*fe
    if f<=0:
        qe=0
    else:
        if lam<=mu-c*(1-r)/f:
            qe=1
        elif mu-c*(1-r)/f<lam<=mu/r-c*(1-r)/(r*f):
            qe=(mu-lam*r)/(lam*(1-r))-c/(lam*f)
        elif mu/r-c*(1-r)/(r*f)<lam:
            qe=0
    Sqe=c*(lam*qe*(1-r)+lam*r)/(mu-lam*r-qe*lam*(1-r))
    S0=c*lam*r/(mu-lam*r)
    print("%11.6f %.6f %f %f"% (fg,qe,Sqe,S0))
import numpy as np
p=np.zeros(1002)
import math
LT=map(lambda x:x/fe,range(0,401))
for fg in LT:
    f=fg-(1-r)*fe
    rho=lam/mu
    if f<=0:
        ne=0
    else:
        ne=math.floor(mu*f/(c*(1-r)))
    if rho!=1:
        p[0]=(1-rho)*(1-r*rho)/(1-r*rho*(1-r)*rho**(ne+1))
    else:
        p[0]=1/(ne+1)
    for n in range(1,1001):
        if n<ne:
            p[n]=p[0]*rho**n
        else:
            p[n]=p[0]*rho**n*r**(n-ne)
    Sne=sum(p[n]*lam*c*(n+1)/mu for n in range(0,ne))+sum(p[n]*lam*r*c*(n+1)/mu for n in range(ne,1001))
    Sn0=sum(p[n]*lam*r*c*(n+1)/mu for n in range(0,1001))
    print("%11.6f %.6f %f %f"%(fg,ne,Sne,Sn0))

Я использую ноутбук Юпитера Анаконды для Python. В коде, если LT=map(lambda x:x/fe,range(0,401)) не записано во второй раз перед second for loop, вывод не отображается. Почему это происходит?

1 Ответ

0 голосов
/ 08 сентября 2018

Я не уверен, хотите ли вы, чтобы ваши числа в виде длинных строк или в отдельных столбцах при конвертации в excel?

В любом случае это то, что вы делаете:

Добавить

import pandas as pd
myList = []

Затем в каждом цикле for вместо печати выполните:

myList.append("%11.6f %.6f %f %f"% (fg,qe,Sqe,S0))

и

myList.append("%11.6f %.6f %f %f"%(fg,ne,Sne,Sn0))

Наконец,

df = pd.DataFrame({'OutputColumn':myList})
df.to_csv("Output.csv")

Я предложил использовать фреймы данных, потому что это отличное / простое решение, если вы хотите, чтобы каждый из этих # был отдельным столбцом, что для меня более понятно (хотя я не уверен, что это за проект). Если вы используете pandas, вы легко сможете выполнить много вычислений, чтобы сгенерировать новые столбцы и все такое, используя фреймы данных, что может исключить ваше зацикливание. Если вы заинтересованы и можете более конкретно указать, что вы хотите, так как код немного запутывает вас как постороннего, я был бы рад помочь.

Надеюсь, это поможет! Если вы хотите продолжить добавление в этот CSV, есть способ сделать это также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...