Могу ли я использовать многострочные (не последовательные) заголовки в DataFrame для нескольких разделов, все в одном столбце (вывод в CSV)? - PullRequest
0 голосов
/ 26 мая 2020

Я создал один столбец через 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

...