Pandas Zeitangabe Formatieren

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
Lienz20013
User
Beiträge: 88
Registriert: Freitag 26. September 2014, 14:42

He, Ho ich habe ein Problem mit pandas ein Zeitangaben einzulesen und zwar sieht es folgendermaßen aus:
'29. Mrz. 15 10:48:34'
das hätte ich gern in der Form:
'2015-03-29 10:48:34'

Weiß jemand wie ich das Formatieren kann? Weil mit dem oberen Beispiel kann man nicht in pandas arbeiten.
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Python kann lokalisierte Datumsangaben lesen.
Ich weiß nicht wie das unter anderen Betriebssystemen ist, aber unter Windows musst du ihm unter Umständen unter die Arme greifen:

Code: Alles auswählen

>>> import locale
>>> import datetime
>>> locale.setlocale(locale.LC_ALL, 'deu_deu')
'German_Germany.1252'
>>> a = "29. Mrz. 15 10:48:34"
>>> b = datetime.datetime.strptime(a, "%d. %b. %y %H:%M:%S")
>>> b
datetime.datetime(2015, 3, 29, 10, 48, 34)
Damit hast du den Zeitstempel schon einmal in eine datetime.datetime-Objekt gewandelt. Wie man das dann in ein neues Format ändert, kriegst du selber raus. (Stichwort: strftime)

Ich weiß nicht ob man das mit der setzen von "locale" auch generischer machen kann, denn unter Linux wird das wahrscheinlich nicht deu_deu sondern de_DE sein.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Tatsache auch kaputtes wie "Mrz".
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Naja... so richtig kaputt ist das nicht.
BlackJack

@sparrow: Da steht aber „Mär.” und der OP hat „Mrz.”

Da AFAIK MS Office den März mit Mrz. abkürzt ist das natürlich ein de facto Standard. :-)
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Ich nehme alles zurück und behaupte das Gegenteil!
Antworten