ich habe ein "Problem" und zwar werden meine Daten für mehrere Messstellen und Zeitschritte in einer Spalte raus geschrieben, heißt Zeitschritt 1, alle Messstellen und deren Werte. Der nächste Zeitschritt wird dann direkt darunter geschrieben mit der Information der vergangenen Zeit. Ich hätte es aber gerne als eine m * t+1 Matrix, also mit den m verschiedenen Messstellen als erste Spalte und für jeden Zeitschritt t dann eine extra Spalte. Klar kann ich das auch alles händisch mit Excel umformatieren, aber ich dachte mit python könnte ich mir da ne Menge Zeit sparen.
Eine Dummy Input Datei, sieht in etwa so aus und ist tab getrennt:
Zeit 1.5
Messstelle Messwert
1 23
2 45
3 23
…
123423 45
Zeit 1.75
Messstelle Messwert
1 33
2 21
3 55
….
usw.
Ziel wäre dann sowas:
Messstelle 1.5 1.75 …
1 23 33 …
2 45 21 …
3 23 55 …
…
Mein aktueller Workaround ist, die Eingangsdatei nach jedem Zeitschritt zu splitten, diese Splits in eine seperate Datei schreiben, und diese Dateien jeweils in ein dataframe einzulesen und sie zu mergen. Bei sehr großen Datenmengen - wo meist auch die Excel Zeilenbeschränkung deutlich überschritten wird - ist dies aber sehr langsam und ineffizient, daher die Frage, ob es nicht was schnelleres gibt
Code: Alles auswählen
#File umkonvertieren
s = open("Input.dat").read()
s = s.replace('Zeit, '#\nMessstelle')# Raute als split marker setzen
s = s.replace('Messstelle Messwert\n', '')
f = open("Input_h.dat", 'w')
f.write(s)
f.close()
#Splitten zu mehreren Text Dateien
with open ("Input_h.dat") as fo:
op=''
start=0
cntr=1
for x in fo.read().split("\n"):
if (x=='#'):
if(start==1):
with open (str(cntr)+'.txt','w') as opf:
opf.write(op)
opf.close
op=''
cntr+=1
else:
start=1
else:
if(op==''):
op=x
else:
op=op+'\n'+x
fo.close()
#löschen der Hilfsdatei
os.remove('Input_h.dat')
#Einlesen der Textdateien ins Dataframe
i=1
while i<cntr:
df="df_"+str(i)
#print(df)
df=pd.read_csv(str(i)+'.txt', sep='\t', )
#print(df.head())
if i==1:
df_summary=df
elif i>1:
df_summary=df_summary.merge(df, on="Messstelle", how="left" )
#löschen der Hilfsdateien
import os
os.remove(str(i)+'.txt')
i=i+1
P.S. Ich bin kein Informatiker oder Informatikstudent, ich versuche mir mit python autodidaktisch meine Datenanalyse zu vereinfachen, also nicht zu böse sein, wenn ich was falsch labele oder einen komplett schwachsinnigen Algorithmus verwende