2016-11-29 3 views
1

Я читаю csv с датами без данных часового пояса, но как только я использую столбец datetime в качестве индекса, добавляется (n неправильное) смещение часового пояса. Как я могу предотвратить это?Установка datetime64 в качестве индекса dataframe для pandas автоматически добавляет смещение временной зоны

Данные:

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]', так что добавлен часовой пояс, хотя добавлен добавленный часовой пояс (что, кстати, похоже, тоже летнее время). Если я установил часовой пояс в UTC с df = df.tz_localize("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.

ответ

3

Это исключительно проблема с отображением - ваши даты по-прежнему не зависят от часовой пояс, просто numpy отображает смещение в редакции.

Если вы обновляетесь до более позднего 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]') 

 Смежные вопросы

  • Нет связанных вопросов^_^