Ich lese eine CSV mit Datumswerte ohne Zeitzonendaten, aber sobald ich die Datetime-Spalte als Index verwende, wird ein (n falscher) Zeitzonenoffset hinzugefügt. Wie kann ich das verhindern?Einstellen der Datetime64-Reihe als Pandas-Dataframe-Index fügt automatisch Zeitzonen-Offset hinzu
Die Daten:
Time (UTC),Open,High,Low,Close,Volume
2005.01.03 00:00:00,1.8275,1.858,1.7971,1.819,41998.5
2005.01.10 00:00:00,1.8095,1.8376,1.771,1.766,46353.9
Es ist wöchentlich EHTS- Daten.
import pandas as pd
df = pd.read_csv("test.csv", parse_dates=["Time (UTC)"])
Nach Einlesen der Daten gibt es keine Zeitzonen:
in:
df["Time (UTC)"].head(2)
out:
0 1973-02-26
1 1973-03-05
Name: Time (UTC), dtype: datetime64[ns]
Aber wenn ich diese Daten als Index gesetzt, versetzt eine Zeitzone hinzugefügt wird:
in:
df.index = df["Time (UTC)"]
df.index.values[:1]
out:
array(['1973-02-26T01:00:00.000000000+0100'], dtype='datetime64[ns]')
df.index
mit Ich bekomme das dtype='datetime64[ns]'
zurück, also wird keine Zeitzone hinzugefügt, obwohl ein Zeitzonen-Offset hinzugefügt wurde (was übrigens scheint, auch Sommerzeit zu haben). Wenn ich die Zeitzone auf UTC mit df = df.tz_localize("UTC")
einstelle, zeigt df.index
mich dtype = 'datetime64[ns, UTC]'
an. Es hat jedoch keine Auswirkungen auf die Offsets.
Da ich weiß, in welcher Zeitzone sich die Daten befinden, brauche ich keinen Zeitzonen-Offset, noch viel weniger einen falschen, der wahrscheinlich auf der Zeitzone meiner Maschinen basiert. Ich hätte lieber ["Time (UTC)"] Spalte als Index bei der Verwendung von pd.read_csv aus Leistungsgründen gesetzt, aber ich bekomme das gleiche Verhalten, wenn Sie das tun.
Wie kann ich verhindern, dass ein Zeitzonenoffset hinzugefügt wird, oder den richtigen setzen?
Meine Python-Version ist 2.7.11 (Anaconda 2.5.0 64 Bit), Pandas Version ist 0.17.1, numpy 1.10.4.