Я создал один столбец через Pandas - DataFrame методом грубой силы, секция за секцией с помощью pd.concat (). Выходной файл предназначен для контроллера мотора (поэтому формат файла фиксированный), причем две секции управляют движением в противоположных направлениях. Код, который я создал, работает нормально, но я пытаюсь узнать, как лучше использовать заголовки (и думаю, что должен быть более элегантный способ, чем может придумать этот newb ie). Над и под каждым разделом значений скорости есть текст, и я создал несколько переменных для масштабирования важных частей скоростей. По сути, я использую только один заголовок и использовал фреймы данных для заполнителей в других текстах заголовков. Я думаю, что для каждого раздела есть собственный заголовок, а затем объединить их позже.
#Begin code
import pandas as pd
import csv
logdir = 'data/TestRig/' #You will need to create this folder or set a new location
#Scalar values for up and down stroke speeds
SpeedAtTop=140
ST=SpeedAtTop #Smaller variable name
SpeedAtBottom=90
SB=SpeedAtBottom #Smaller variable name
UpMax=500
UpMin=140
DownMax=450
DownMin=135
Header = "Upward Motion Speed (starting from bottom):" #smaller label
#A = {"B":["Upward Motion Speed (starting from bottom):",140]}
A = {Header:[ST,ST]}
dfA1 = pd.DataFrame(data=A)
#Speed values, upstroke
B = {Header:[158,216,276,335,390,437,473,496,500,483,443,374,274,140]}
dfA2 = pd.DataFrame(data=B)
dfA2= round((dfA2-dfA2.min())/(dfA2.max()-dfA2.min())*(UpMax-UpMin)+UpMin,0)
dfA2= dfA2.astype(int)
#Coasting speeds, upstroke
C = {Header:[150,150,150,150,150,150,150,150,150]}
dfA3 = pd.DataFrame(data=C)
D = {Header:["End Upward Motion"," ","Downward Motion Speed (starting from top):",ST]}
dfA4 = pd.DataFrame(data=D)
#Speed values, downstroke
E = {Header:[145,234,317,385,431,450,443,415,373,324,273,224,178,135]}
dfA5 = pd.DataFrame(data=E)
dfA5= round((dfA5-dfA5.min())/(dfA5.max()-dfA5.min())*(DownMax-DownMin)+DownMin,0)
dfA5= dfA5.astype(int)
#Coasting speeds, downstroke
F = {Header:[SB,SB,SB,SB,SB,SB,SB,SB,SB,SB,"End Downward Motion"]}
dfA6 = pd.DataFrame(data=F)
frames = [dfA1,dfA2,dfA3,dfA4,dfA5,dfA6]
result = pd.concat(frames)
result.to_csv(logdir + "speedprofile.csv", index=False)
Вывод:
сгенерированное изображение файла CSV