Seite 1 von 1

Messdaten in CSV speichern (Fortlaufend)

Verfasst: Montag 31. Mai 2021, 16:21
von Jghurt
Hallo Zusammen,

ich habe ein kleines Problem, bei dem ich leider nicht weiter komme:

Ich berechne in meinem Python Skript minütlich unterschiedliche Werte. Diese möchte ich jetzt in einer CSV Datei wie folgt abspeichern:

gewünschter Output in CSV:

Code: Alles auswählen

,Zeit,I_MIN,GLOBALSTRAHLUNG
0,2021-05-31 16:38:25,44,350.6653231
1,2021-05-31 16:39:25,34,140.282828
2,2021-05-31 16:40:25,50,404.76195652173897

Was ich bisher geschafft habe (Input):

Code: Alles auswählen

        
Zeit = [d] 
I_MIN = [I_min]
GLOBALSTRAHLUNG = [glob]	
dict = {'Zeit': Zeit, 'I_MIN': I_MIN, 'GLOBALSTRAHLUNG': GLOBALSTRAHLUNG } 
df2 = pd.DataFrame(dict) 
df2.to_csv('test.csv')
und als Output davon kriege ich:

Code: Alles auswählen

,Zeit,I_MIN,GLOBALSTRAHLUNG
0,2021-05-31 16:40:25.523824+02:00,50,404.76195652173897
Die neuen Daten überschreiben bei mir immer in der ersten Zeile die Werte.
Ich schaffe es also nicht wie oben gewünscht, dass die anderen Daten/Werte jeweils in einer neuen Zeile darunter abgespeichert werden.

Danke :)

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Montag 31. Mai 2021, 16:54
von __deets__
Am einfachsten liest du einfach alles aus der bestehenden Datei ein, hängst den Datensatz an, und schreibst alles wieder weg.

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Montag 31. Mai 2021, 17:05
von Jghurt
__deets__ hat geschrieben: Montag 31. Mai 2021, 16:54 Am einfachsten liest du einfach alles aus der bestehenden Datei ein, hängst den Datensatz an, und schreibst alles wieder weg.
Wie meinst du das :D? Also mein Skript ist bisschen länger und macht noch andere Sachen. Nur bei diesem von mir oben erwähnte Abschnitt habe ich Probleme und schaffe es nicht, die berechneten Daten wie gewünscht in der Csv abzuspeichern

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Montag 31. Mai 2021, 17:07
von rogerb
Es müsste auch möglich sein, einfach die neuen Daten ans Ende der Datei anzuhängen:

Code: Alles auswählen

df2.to_csv("test.csv", mode="a", header=False)
Beim ersten Schreiben dann eben den Header schreiben (header=True) , danach nicht mehr (header=False)

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Montag 31. Mai 2021, 17:45
von Jghurt
rogerb hat geschrieben: Montag 31. Mai 2021, 17:07 Es müsste auch möglich sein, einfach die neuen Daten ans Ende der Datei anzuhängen:

Code: Alles auswählen

df2.to_csv("test.csv", mode="a", header=False)
Beim ersten Schreiben dann eben den Header schreiben (header=True) , danach nicht mehr (header=False)
Danke! Das hat mein Hauptproblem gelöst :)

Mein Output sieht jetzt wie folgt aus:

Code: Alles auswählen

,Zeit,I_MIN,GLOBALSTRAHLUNG
0,2021-05-31 18:39:12.432232+02:00,50,184.198792270531
0,2021-05-31 18:40:26.371231+02:00,50,184.198792270531
0,2021-05-31 18:40:31.899838+02:00,50,184.198792270531
Vorne steht zwar überall die "0" statt den fortlaufenden Zahlen, aber das ist an sich nicht schlimm. Mir war es nur wichtig, dass die Werte nun fortlaufend gespeichert werden. Das passt nun auf den ersten Blick :)

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Dienstag 1. Juni 2021, 06:39
von ThomasL
Ist schon länger her, das ich etwas mit pandas gemacht habe, aber ich denke die erste Null ist der Index.
Ein Blick in die Doku https://pandas.pydata.org/docs/referenc ... o_csv.html
und siehe da, es gibt einen Parameter um das schreiben des Index in die .csv Datei zu unterbinden.

Code: Alles auswählen

df2.to_csv("test.csv", mode="a", header=False, index=False)

Re: Messdaten in CSV speichern (Fortlaufend)

Verfasst: Dienstag 1. Juni 2021, 13:32
von Jghurt
ThomasL hat geschrieben: Dienstag 1. Juni 2021, 06:39 Ist schon länger her, das ich etwas mit pandas gemacht habe, aber ich denke die erste Null ist der Index.
Ein Blick in die Doku https://pandas.pydata.org/docs/referenc ... o_csv.html
und siehe da, es gibt einen Parameter um das schreiben des Index in die .csv Datei zu unterbinden.

Code: Alles auswählen

df2.to_csv("test.csv", mode="a", header=False, index=False)
Vielen Dank! :)