ich habe ein script, was mir Heizungsdaten ausliest, und die einzelnen Werte dann in 5 CSV Dateien speichert.
Diese 5 CSV Dateien wurden dann in eine zusammengefasst.
Alle Dateien haben dieses Format:
Code: Alles auswählen
,time,state
0,1682914500000,5.388939393939403
1,1682915400000,5.591777777777786
2,1682916300000,6.0627777777777725
3,1682917200000,6.3917777777777705
4,1682918100000,6.80044444444444
Code: Alles auswählen
2023-03-31 22:12:00;7,607142857142857;0,8;63650,600000000006;11213,3;2348,706153846154
2023-03-31 22:26:00;7,7;0,8;63651,535714285725;11213,3;2348,830769230769
2023-03-31 22:40:00;7,776923076923075;0,8;63652,43076923077;11213,3;2348,9516666666664
Mit dieser Zeile konnte ich die 5 CSV zu einer "mergen". Das lief über Jahre hinweg gut. Ich fürchte ein Pandas Update ist die Ursache. Da bekomme ich jetzt immer einen Fehler:
Code: Alles auswählen
merged = pandas.read_csv(all_filenames[0], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[1], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[2], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[3], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[4], index_col=[0], parse_dates=[0]), on='time'), on='time'), on='time'), on='time')
Code: Alles auswählen
/home/homer/heizungsloggen/heizungsdatenloggen.py:81: UserWarning: Could not infer format, so each element will be parsed individually, falling back to `dateutil`. To ensure parsing is consistent and as-expected, please specify a format.
merged = pandas.read_csv(all_filenames[0], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[1], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[2], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[3], index_col=[0], parse_dates=[0]).merge(pandas.read_csv(all_filenames[4], index_col=[0], parse_dates=[0]), on='time'), on='time'), on='time'), on='time')
Wenn ich es auf True setze, einfach weg lasse, bekomme ich aber nicht das was ich möchte.
Ich habe es dann noch mit concat versucht, da bekomme ich auch alle 5 vereint, aber es wird jedesmal die Datumszeile mit genommen. Also sieht die Struktur des CSV dann so aus:
Code: Alles auswählen
time,value,time,value,time,value,time,value,time,value
Code: Alles auswählen
df0 = pandas.read_csv(all_filenames[0], index_col=[0])
df1 = pandas.read_csv(all_filenames[1], index_col=[0])
df2 = pandas.read_csv(all_filenames[2], index_col=[0])
df3 = pandas.read_csv(all_filenames[3], index_col=[0])
df4 = pandas.read_csv(all_filenames[4], index_col=[0])
merged = pandas.concat([df0, df1, df2, df3, df4], axis=1, join='inner').sort_index()