2016-06-14 4 views
2

Я пытаюсь преобразовать время utc в локальное время. Это то, что я имел в своем распоряженииpandas time shift from utc to local

df_combined_features['timestamp'][1:10] 
2013-01-24 2013-01-24 11:00:00 
2013-04-25 2013-04-25 10:00:00 
2013-07-25 2013-07-25 10:00:00 
2013-10-24 2013-10-24 10:00:00 
2014-01-30 2014-01-30 11:00:00 
2014-04-24 2014-04-24 10:00:00 
2014-07-24 2014-07-24 10:00:00 
2014-10-23 2014-10-23 10:00:00 
2015-01-27 2015-01-27 11:00:00 

Это то, что я сделал

df_combined_features['time_stamp'].tz_localize('US/Central')[1:10] 
2013-01-24 00:00:00-06:00 2013-01-24 11:00:00 
2013-04-25 00:00:00-05:00 2013-04-25 10:00:00 
2013-07-25 00:00:00-05:00 2013-07-25 10:00:00 
2013-10-24 00:00:00-05:00 2013-10-24 10:00:00 
2014-01-30 00:00:00-06:00 2014-01-30 11:00:00 
2014-04-24 00:00:00-05:00 2014-04-24 10:00:00 
2014-07-24 00:00:00-05:00 2014-07-24 10:00:00 
2014-10-23 00:00:00-05:00 2014-10-23 10:00:00 
2015-01-27 00:00:00-06:00 2015-01-27 11:00:00 

Я думаю, что правильно сделал, но я не понимаю, формат вывода. В частности,

1) Почему преобразованные столбцы отображаются как новый индекс?

2) Я понимаю, что -06: 00 (в последней строке) - это смена часов, поэтому время 6:00 утра, как я могу получить эту информацию, точное местное время?

Желаемый результат, я хочу, чтобы точное время было опубликовано, включая смещение от utc. Местное время UTC

2013-01-24 05:00:00 2013-01-24 11:00:00 
    2013-04-25 05:00:00 2013-04-25 10:00:00 
    2013-07-25 05:00:00 2013-07-25 10:00:00 
    2013-10-24 05:00:00 2013-10-24 10:00:00 
    2014-01-30 05:00:00 2014-01-30 11:00:00 
    2014-04-24 05:00:00 2014-04-24 10:00:00 
    2014-07-24 05:00:00 2014-07-24 10:00:00 
    2014-10-23 05:00:00 2014-10-23 10:00:00 
    2015-01-27 05:00:00 2015-01-27 11:00:00 
+0

Может лет u отправляйте исходные данные и код, чтобы воспроизвести то, что вы видите, поскольку это не должно происходить, если это df, а 'timestamp' - один из столбцов, он выглядит немного в том смысле, что вы не используете' .dt' который требуется для столбцов, но не для объекта индекса, возможно, потому, что вы видите то, что видите. – EdChum

+0

Спасибо Эд, не уверен, как вы это понимаете. .dt? Может, так оно и есть? Я не уверен, сколько еще материала для публикации, я разместил правильные разделы, которые отображают то, что я вижу. Заинтересованы в вашем замечании .dt. –

+0

OK Я могу воспроизвести, что он отправит ответ – EdChum

ответ

1

При вызове tz.localize локализовать индекс, если вы хотите изменить столбец, нужно вызвать dt.localize также добавить смещение часового пояса вызова dt.tz_convert('UTC'):

In [125]: 
df['timestamp'].dt.tz_localize('utc').dt.tz_convert('US/Central') 

Out[125]: 
index 
2013-01-24 2013-01-24 05:00:00-06:00 
2013-04-25 2013-04-25 05:00:00-05:00 
2013-07-25 2013-07-25 05:00:00-05:00 
2013-10-24 2013-10-24 05:00:00-05:00 
2014-01-30 2014-01-30 05:00:00-06:00 
2014-04-24 2014-04-24 05:00:00-05:00 
2014-07-24 2014-07-24 05:00:00-05:00 
2014-10-23 2014-10-23 05:00:00-05:00 
2015-01-27 2015-01-27 05:00:00-06:00 
Name: timestamp, dtype: datetime64[ns, US/Central] 

Сравнить без .dt:

In [126]:  
df['timestamp'].tz_localize('utc').tz_convert('US/Central') 
Out[126]: 
index 
2013-01-23 18:00:00-06:00 2013-01-24 11:00:00 
2013-04-24 19:00:00-05:00 2013-04-25 10:00:00 
2013-07-24 19:00:00-05:00 2013-07-25 10:00:00 
2013-10-23 19:00:00-05:00 2013-10-24 10:00:00 
2014-01-29 18:00:00-06:00 2014-01-30 11:00:00 
2014-04-23 19:00:00-05:00 2014-04-24 10:00:00 
2014-07-23 19:00:00-05:00 2014-07-24 10:00:00 
2014-10-22 19:00:00-05:00 2014-10-23 10:00:00 
2015-01-26 18:00:00-06:00 2015-01-27 11:00:00 
Name: timestamp, dtype: datetime64[ns] 
+0

Хорошо, но как мне получить временную смену, например -06: 00? –

+0

Это, к сожалению, не очень помогает, я хочу точное местное время, включая смену. Есть ли простой способ сделать это? –

+0

Итак, каков ожидаемый результат? Вы хотите, чтобы время сдвигалось по смещению часового пояса? – EdChum

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