我正在阅读没有时区数据的日期时间的csv,但是一旦我使用datetime列作为索引,就会添加一个(n个不正确的)时区偏移量。我怎样才能防止这种情况发生?
数据:
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
这是每周的OHLC数据。
import pandas as pd
df = pd.read_csv("test.csv", parse_dates=["Time (UTC)"])
读入数据后,没有时区偏移:
in:
df["Time (UTC)"].head(2)
out:
0 1973-02-26
1 1973-03-05
Name: Time (UTC), dtype: datetime64[ns]
但是当我将此数据设置为索引时,会添加时区偏移量:
in:
df.index = df["Time (UTC)"]
df.index.values[:1]
out:
array(['1973-02-26T01:00:00.000000000+0100'], dtype='datetime64[ns]')
使用df.index
,我回到dtype='datetime64[ns]'
,所以即使添加了时区偏移也没有添加时区(顺便说一下,这也似乎有夏季)。如果我使用df = df.tz_localize("UTC")
将时区设置为UTC,df.index
会显示dtype = 'datetime64[ns, UTC]'
。但是,它对偏移没有影响。
由于我知道数据的时区,我不需要时区偏移,更不用说可能基于我的机器时区的错误了。 出于性能原因,我宁愿将[“Time(UTC)”]列设置为使用pd.read_csv的索引,但在执行此操作时我会得到相同的行为。
如何防止添加时区偏移或设置正确的时区偏移?
我的python版本是2.7.11(Anaconda 2.5.0 64位),pandas版本是0.17.1,numpy 1.10.4。
答案 0 :(得分:3)
这只是一个显示问题 - 您的日期仍然是时区的,只是numpy
在repr中显示偏移量。
如果您升级到更新的numpy(1.11 +),它将解决显示问题。
In [31]: np.__version__
Out[31]: '1.11.1'
In [32]: df.index.values[:1]
Out[32]: array(['2005-01-03T00:00:00.000000000'], dtype='datetime64[ns]')