gpt4 book ai didi

python - 将 datetime64 系列设置为 pandas dataframe 索引会自动添加时区偏移

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:22 24 4
gpt4 key购买 nike

我正在读取一个没有时区数据的带有日期时间的 csv,但是一旦我使用日期时间列作为索引,就会添加一个(不正确的)时区偏移量。我怎样才能防止这种情况发生?

数据:

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] '。但是,它对偏移量没有影响。

因为我知道数据所在的时区,所以我不需要时区偏移量,更不用说可能基于我的机器时区的错误偏移量了。出于性能原因,我宁愿在使用 pd.read_csv 时将 ["Time (UTC)"] 列设置为索引,但这样做时我得到了相同的行为。

如何防止添加时区偏移或设置正确的时区偏移?

我的 python 版本是 2.7.11(Anaconda 2.5.0 64 位),pandas 版本是 0.17.1,numpy 1.10.4。

最佳答案

这只是一个显示问题 - 你的日期仍然是时区天真的,只是 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]')

关于python - 将 datetime64 系列设置为 pandas dataframe 索引会自动添加时区偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40865404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com