Datetime -Dot Format

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Hey Leute,


Ich sitzte nun seit ein paar Tagen an einem Problem was Ich alleine leider nicht gelöst bekomme.


Also zum Problem Ich arbeite mit Pandas und hole mit einen Tag aus einer Excel Datei da dieser Tag wie folgt aussieht 25. muss Ich diesen formatieren sprich Ich erzeuge daraus ein Datetime objekt ( Hinweis das mache Ich nicht mit pd.Datetime da es hier bereits eine Warnung gibt das dieses in Zukunft nicht mehr unterstützt wird deshalb muss Ich diesen Schritt mit der Bibliothek datetime machen ) naja das Problem ist Ich bekomme es ohne weiteres hin das es wie folgt aussieht:


Ich habe folgendes Versucht:

Code: Alles auswählen

neues_datum = datetime(jahr, int(monat), int(tag_in_df)).date() 


Ausgabe:
2019-05-12


Ich möchte jedoch das es wie ein deutsches Datum aussieht -> 2019.05.12 -> die Reihenfolge wird später mit Datetime format festgelegt wenn Ich das Datum wieder in Excel schreibe.

Ich bekomme die - Striche einfach nicht weg und finde kein Weg , ICH MÖCHTE NICHT das es zu einem String gewandelt wird ( datetime.strptime) da das Ergebnis dann wieder wie oben aussieht und Ich dann Probleme in Excel bekomme wenn es ein Text und nicht Datetime Datentyp habe.

Ich danke euch
Eine Vision ohne Aktion bleibe eine Illusion
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bl3nder: Das `date`-Objekt hat weder Striche noch Punkte, das was Du willst macht also erst einmal so überhaupt gar keinen Sinn.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich verstehe Dein Problem nicht, die übliche Darstellung ist mit -. Warum willst Du davon abweichen? 2019.05.12 ist wirklich unüblich. Und wie Du selbst schon festgestellt hat, wird beim Excel-Export eh nur der Zahlenwert gespeichert.
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

@__blackjack__
Das `date`-Objekt hat weder Striche noch Punkte, das was Du willst macht also erst einmal so überhaupt gar keinen Sinn.

Wenn Ich diese Code so ausführen würde:

Code: Alles auswählen

neues_datum = datetime(2019, 5, 19)

würde Ich folgendes erhalten :

2019-05-19 00:00:00 vom Typ <class 'datetime.datetime'> Ich möchte jedoch die Uhrzeit überhaupt nicht deswegen hänge Ich das Date dran

Ausgabe sieht dann wie folgt aus :

2019-05-19 vom Typ <class 'datetime.date'>


@ Sirius3
Ich verstehe Dein Problem nicht, die übliche Darstellung ist mit -. Warum willst Du davon abweichen? 2019.05.12 ist wirklich unüblich. Und wie Du selbst schon festgestellt hat, wird beim Excel-Export eh nur der Zahlenwert gespeichert.

Ich muss leider davon abweichen Ich versuche es mal so leicht wie möglich zu erklären.Ich habe eine Datei in der sich alte Datensätze ( von jemanden anderen ) eingepflegt befinden dort ist das Datum mit Punkten eingetragen worden. Natürlich könnte Ich das ändern das Problem ist das diese Datei später mit einer anderen Programmiersprache bearbeitet wird ( Perl ) wovon Ich keine Ahnung habe -> und hier weiß Ich nicht ob das zu eventuellen Fehlern führen könnte ... deswegen dachte Ich es wäre sinnvoll das Format an das alte anzupassen... Also würdet ihr das lieber mit Bindestrichen belassen bzw die alten Daten anpassen das diese nicht mehr mit einem Punkt dargestellt werden sondern auch mit Bindesstrichen ?
Eine Vision ohne Aktion bleibe eine Illusion
Sirius3
User
Beiträge: 18274
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich dachte, die Ausgabe wäre Excel?
Bei Ausgabe in csv kannst Du doch das Format angeben:

Code: Alles auswählen

df.to_csv("output.csv", date_format='%Y.%m.%d')
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn du nur ein Datum brauchst, dann nimm' doch direkt ein datetime.date Objekt statt datetime.datetime, was dann dann zu date wandelst.

Bzgl. des Datums: nach meiner Erfahrung sollte man möglichst jedes Datum im ISO8601 Format schreiben, also JJJJ-MM-DD. Weil's eben ein standardisiertes Format ist, sollten damit die meisten Programmiersprachen OOTB klar kommen.

Gruß, noisefloor
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Ich dachte, die Ausgabe wäre Excel?

Ja das Problem ist das in der Excel Datein berechnungen gemacht werden deswegen muss Ich erst eine xlsx Datei mit daten befüllen und danach muss Ich diese Datei in eine csv Datei wandeln ( da csv Dateien keine Formeln in Excel zulassen )


Bei Ausgabe in csv kannst Du doch das Format angeben: -> deswegen konnte Ich das hier noch nicht ausprobieren

Ich habe versucht in der xlsx Datei datetime_format="DD.MM.YYYY" festzulegen -> aber das hat nichts bewirkt.
Eine Vision ohne Aktion bleibe eine Illusion
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

@ noisefloor stimmt das wäre wahrscheinlich weniger verwirrend dann würde Ich mir schon richtig wie du sagst das wandeln einmal sparen werden Ich nachher gleich umsetzten danke für den Tipp
Eine Vision ohne Aktion bleibe eine Illusion
Bl3nder
User
Beiträge: 139
Registriert: Freitag 3. Januar 2020, 17:07

Nachtrag Ich habe wie von Noisefloor vorgeschlagen direkt ein Dateobjekt erzeugt und expliziert beide format in den Excelwriter erwähnt und nun klappt alles Ich danke euch für eure hilfe
Eine Vision ohne Aktion bleibe eine Illusion
Antworten