Seite 1 von 1
Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 09:16
von Progressive
Hi,
ich habe feststellen müssen, dass sich beim Zeitformat Tag-Monat-Jahr auf einmal die Reihenfolge zu Monat-Tag-Jahr änderte. Innerhalb eines Dataframes bzw. dessen Indizes:
Code: Alles auswählen
30-06-2019 23:58:46
30-06-2019 23:59:46
07-01-2019 00:00:46
07-01-2019 00:01:46
Warum?
Und wie verhindere ich das..?
Das soll natürlich der Erste im Juli sein, nicht der Siebte im Januar..
Screenshot:
https://ibb.co/chFbTwD
Re: Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 09:36
von Sirius3
@Progressive: jetzt wäre es noch schlau zu wissen, wie Du die Daten liest?
Re: Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 09:49
von Progressive
Ja, habe herumgespielt, die Reihenfolge passt jetzt prinzpiell:
Code: Alles auswählen
30-06-2019 23:57:46
30-06-2019 23:58:46
30-06-2019 23:59:46
01-07-2019 00:00:46
01-07-2019 00:01:46
01-07-2019 00:02:46
Was es letztlich war, kann ich nicht sagen. Ich habe überall, wo es möglich war, "Dayfirst = True" angefügt. Aber wenn ich zwischen
und
slicen möchte, bekomme ich immer noch :
Die Zeitdaten waren bis dato im Index und bis der Juli hinzukam hat alles funktioniert.. um das Problem etwas einzugrenzen, habe ich die Zeitdaten als zusätzliche Spalte angefügt, damit es nicht irgendwie mit dem Index zusammenhängt. Das ändert aber auch nichts..
Code: Alles auswählen
02-07-2019 08:56:51
02-07-2019 08:57:51
02-07-2019 08:58:51
02-07-2019 08:59:51
02-07-2019 09:00:51
02-07-2019 09:01:51
02-07-2019 09:02:51
02-07-2019 09:03:51
02-07-2019 09:04:51
02-07-2019 09:05:52
02-07-2019 09:06:52
Um zu slicen, benutze ich:
.
Ich versteh das Problem nicht..
Kann es sein, dass, unabhängig von der Darstellung bzw. Reihenfolge Tag und Monat trotzdem falsch zugeordnet werden? Also dass python immer noch glaubt, 02 wäre der Monat und 07 der Tag?
Re: Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 10:16
von Sirius3
@Progressive: Du zeigst immer noch keinen Code, was Du eigentlich machst. Sollen wir jetzt raten, warum da irgendwas nicht passt?
Re: Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 10:23
von Progressive
Hab's irgendwie hingekriegt.. keine Ahnung, wie. Irgendwann hat es funktioniert.
Ich mag meinen Code nicht zeigen, der ist hässlich
Bin erst vor kurzem zu python (zwangsweise) gewechselt.. ich werde aus der Syntax oft partout nicht schlau. Vor allem das Indizieren ist irgendwie ein unscharfer Mischmasch aus C++/R..
Wie auch immer, ich gelobe Besserung. Das nächste Mal mache ich es verständlicher. Danke trotzdem natürlich!
Für etwaige Leidensgenossen in spe:
bei
pd.to_datetime(df, dayfirst = True)
war schonmal hilfreich, sowie auch
pd.to_datetime(df).dt.strftime("%Y-%d-%m %H-%M-%S")
, also bei letzterem natürlich je nach Format, was man benötigt.
Kurzum: Ich habe python gezwungen, das Format beizubehalten und nicht - warum auch immer - inmitten eines kontinuierlichen Datensatzes auf einmal Monat und Tag zu vertauschen. Sowas Fieses kann man sich nicht ausdenken..
Ahso, und dieses Vertauschen trat definitiv bei
pd.to_datetime
auf.
Re: Tag-Monat-Reihenfolge ändert sich plötzlich
Verfasst: Freitag 5. Juli 2019, 12:27
von Sirius3
@Progressive: vor `import` steht kein Code, auch kein `print`.
Dass alle Importe in einer Zeile stehen ist schlecht lesbar. Pro importiertem Modul bitte eine eigene Zeile.
Und Module mit _ sind eigentlich nicht dafür gedacht, dass man sie direkt benutzt.
`file_name_input` wird an verschiedenen Stellen benutzt, mal als globale Variable, mal als lokale. Globale Variablen sollte es nicht geben, die lokale macht keinen Sinn, da in der Funktion `read` nichts weiter passiert.
Ein Vergleich auf len(sys.argv)>1 und dann aber auf das dritte Element zuzugreifen, ist wohl ein Programmierfehler. Die zweite Hälfte der Funktion ist wahrscheinlich falsch eingerückt. Nach einem : der einen Bock einleitet wird immer eine neue Zeile angefangen.
Dass Du bei read_csv decimal als "." angibst, später dann "," durch "." ersetzt, ist für mich verwirrend. Was willst Du da tun?
Du hast sehr viele Spalten; warum hast Du die Händisch angegeben? Stehen die nicht in der Datei?
Und statt bestimmte Spalten einzeln aus dem Dataframe zu entfernen, würde ich einfach alle Spalten auswählen, die ich behalten möchte.
Warum wandelst Du die "Zeit"-Spalte nicht schon beim Lesen in datetime um? Was tust Du da mit dem Abschneiden der letzten 4 Zeichen?
Wie sieht Deine Datei aus? Kannst Du da mal ein Beispiel posten?
`df_sensor_copy = df_sensor_values` macht keine Kopie!
Das weitere Herumschieben der Zeit-Spalte macht für mich so auch keinen Sinn. Was willst Du eigentlich erreichen?