Как быстрее создать новый CSV-файл с отдельными столбцами - PullRequest
0 голосов
/ 29 мая 2020

Я создал функцию, которая выполняет несколько вычислений, и мне удалось правильно получить нужные данные в файле csv. Однако мой код очень длинный, и, просматривая другие темы на этом топе c, я не нашел простого способа его сократить. Мой код следующий:

def modelc(x,Mblood,Mliver,dt):
createFile = open('Time.csv', 'w')
createFile.write('t'+'\n')
createFile.close()

createFile = open('Blood.csv', 'w')
createFile.write('Mblood'+'\n')
createFile.close()

createFile = open('Liver.csv', 'w')
createFile.write('Mliver'+'\n')
createFile.close()

while x<24:
    Mblood = Mblood-Mblood*0.5*dt
    Mliver = Mliver+Mblood*0.5*dt
    x+=dt

    appendFile = open('Time.csv','a')
    appendFile.write('%f'%x+'\n')
    appendFile.close()

    appendFile = open('Blood.csv','a')
    appendFile.write('%f'%Mblood+'\n')
    appendFile.close()

    appendFile = open('Liver.csv','a')
    appendFile.write('%f'%Mliver+'\n')
    appendFile.close()

    csv_input = pandas.read_csv('Time.csv')
    csv_blood = pandas.read_csv('Blood.csv')
    csv_liver = pandas.read_csv('Liver.csv')
    csv_input['MassBlood'] = csv_blood['Mblood']
    csv_input['MassLiver'] = csv_liver['Mliver']
    csv_input.to_csv('Modeloutput.csv', index=False)

modelc(0,20,0,0.001)

Тогда CSV-файл будет выглядеть так: введите здесь описание изображения

Есть ли у кого-нибудь простой способ достижения того же результата с более коротким кодом?

1 Ответ

1 голос
/ 29 мая 2020

Открытие и закрытие занимает много времени, так как используется память HD. Вместо этого оставьте файл открытым (во вторичной памяти), выполните все операции и закройте и сохраните в самом конце.

   def modelc(x,Mblood,Mliver,dt):
       createFile = open('Liver.csv', 'wt')
       createFile.write("t,MassBlood,MassLiver")
       for i in range(24):
          Mblood = Mblood-Mblood*0.5*dt
          Mliver = Mliver+Mblood*0.5*dt
          x+=dt
          createFile.write(str(x)+","+str(Mblood)+","+str(Mliver))
    createFile.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...