2016-11-01 6 views
0

Ich betreibe ein Skript (Skript 1) einen leeren Datenrahmen zu schaffen, die von einem anderen Skript gefüllt wird (Skript 2). Der Index in diesem leeren Datenrahmen ist eine Zeitreihe von 30-Minuten-Intervallen über 365 Tage, 1. 2016. Anfang Oktober dieses Zeitreihe Index zu erstellen, Script 1 enthält den folgenden Code:Python/Pandas ändern Datumsformat für DATE_RANGE Index

time_period_start = dt.datetime(2016,01,10).strftime("%Y-%d-%m") 
index = pd.date_range(time_period_start, freq='30min', periods=17520) 

Script 2 ruft Daten aus einer CSV-Datei ab, die Werte für eine Zeitreihe enthalten. Dieses Skript soll diese Daten in einen Datenrahmen einfügen und dann mit dem in Skript 1 erstellten Datenrahmen zusammenführen.

Das Problem, das ich habe, ist, dass das Format der Daten im Datenrahmen in Skript 2 Y-D-M erstellt wird, was kommt aus den CSV-Dateien. Das Format der Daten im Datenrahmen, der in Skript 1 erstellt wird, ist jedoch Y-M-D, das falsche Ergebnisse verursacht, wenn ich versuche, zu fusionieren. Dies ist trotz der Verwendung von ".strftime ("% Y-% d-% m ")" in der ersten Zeile des obigen Codes. Gibt es eine Möglichkeit, die zweite Codezeile so zu ändern, dass der Ausgabedatenrahmen in Y-D-M liegt?

+0

Wenn Sie die dtype zu 'datetime' für beide dfs dann die Zusammenführung festgelegt wird nur funktionieren, mit' strftime' Sie geben eine Zeichenfolge, die keine Kenntnis hat, von denen Komponenten Tag oder Monat sind, du bist besser Aushalten alles als Datetime und Übergeben des richtigen Formats für die Konvertierung, damit die Zusammenführung richtig funktioniert – EdChum

+0

Danke. Das funktioniert jetzt gut. – pottolom

Antwort

1

.strftime() wirkt sich nicht auf den endgültigen Datenrahmen aus, da pd.date_range es sowieso wieder in einen datetime verwandelt. Anstatt zu versuchen, nach Zeichenfolgen zu suchen, sollten Sie die Daten im zweiten Datenrahmen (der von Skript 2 erstellten) auch in datetime konvertieren.

df2.date = pd.to_datetime(df2.date, format='%Y-%d-%m') 
+0

Danke. Das funktioniert. – pottolom