Seite 1 von 1

Zeitformatierung

Verfasst: Mittwoch 22. April 2020, 19:57
von Bebbi
Hallo zusammen

Ich bin fleissig am Python üben und stosse laufend auf neue Probleme.

Soeben habe ich versucht die Daten von zwei Quellen gleich darstellen zu lassen. Bei der einen Datenreihe sieht mein Datenformat wie folgt aus 2010-12-31. Das ist auch das gewünschte Format.
Bei der zweiten Datenreihe sehen die Daten so aus 20110103.
Wie Ihr untenstehenden Tabellen entnehmen könnt habe ich versucht das Datum anders darzustellen, was gründlich misslang. Zum einen kommt Python mit einem weiteren Format und zum anderen startet die Datumsreihe bei 1970-01-01 allerdings mit den Daten vom 20110103... Was habe ich falsch gemacht?

Unnamed: 0 Mkt-RF SMB HML RF
0 20110103 1.18 0.53 0.79 0.0
1 20110104 -0.26 -1.38 0.11 0.0
2 20110105 0.59 0.61 0.14 0.0
3 20110106 -0.15 -0.06 -0.33 0.0
4 20110107 -0.21 -0.25 -0.30 0.0

Unnamed: 0 Mkt-RF SMB HML RF
0 1970-01-01 00:00:00.020110103 1.18 0.53 0.79 0.0
1 1970-01-01 00:00:00.020110104 -0.26 -1.38 0.11 0.0
2 1970-01-01 00:00:00.020110105 0.59 0.61 0.14 0.0
3 1970-01-01 00:00:00.020110106 -0.15 -0.06 -0.33 0.0
4 1970-01-01 00:00:00.020110107 -0.21 -0.25 -0.30 0.0
Zudem habe ich eine grundsätzliche Frage. Müssen die Daten überhaupt im selben Format sein um diese zusammenzuführen oder ist Python so intelligent, dass es unterschiedliche Darstellungen zusammenführen kann?

Bild

Re: Zeitformatierung

Verfasst: Mittwoch 22. April 2020, 20:42
von Sirius3
Jetzt wäre noch spannend, mit welchem Code Du das gemacht hast? Pandas?

Re: Zeitformatierung

Verfasst: Mittwoch 22. April 2020, 20:58
von snafu
Es wäre schon sinnvoll, die Daten alle im gleichen Format vorliegen zu haben. Dann aber nicht als Text, sondern z.B. als datetime-Objekte. Die haben eine Methode zum Einlesen der Daten (strptime). Da musst du je nach Quelle das passende Format angeben und kannst dann mit den so erstellten Objekten weiterarbeiten.

Re: Zeitformatierung

Verfasst: Donnerstag 23. April 2020, 18:56
von Bebbi
Ja, ich habe das mit pandas und folgendem Befehl versucht

market_return['Unnamed: 0'] = pd.to_datetime(market_return['Unnamed: 0'])

ich hoffe das bringt Euch was....

Re: Zeitformatierung

Verfasst: Donnerstag 23. April 2020, 19:08
von Sirius3
Die Umwandlung in eine Datumsspalte machst Du gleich beim Einlesen:

Code: Alles auswählen

parser = lambda d: pd.datetime.strptime(d, '%Y%m%d')
market_data = pd.read_csv(..., date_parser=parser)

Re: Zeitformatierung

Verfasst: Freitag 1. Mai 2020, 19:54
von Bebbi
ok, besten Dank