Pandas DataFrame.to_excel неверная дата и время - PullRequest
0 голосов
/ 12 июня 2018

Учитывая эти данные

import pandas as pd

dt1 = pd.Timestamp('2018-01-11 23:00:00')
dt2 = pd.Timestamp('2018-01-12 01:00:00')

ts = pd.date_range(dt1, dt2, freq='15Min', tz='Europe/Vienna')
values = list(range(ts.shape[0]))

df = pd.DataFrame(values, index=ts)

, где результирующее df выглядит как

                           0
2018-01-11 23:00:00+01:00  0
2018-01-11 23:15:00+01:00  1
2018-01-11 23:30:00+01:00  2
2018-01-11 23:45:00+01:00  3
2018-01-12 00:00:00+01:00  4
2018-01-12 00:15:00+01:00  5
2018-01-12 00:30:00+01:00  6
2018-01-12 00:45:00+01:00  7
2018-01-12 01:00:00+01:00  8

выполнение

df.to_excel('test.xlsx')

приводит к следующему в Excel 2013

2018-01-11 22:00:00 0
2018-01-11 22:15:00 1
2018-01-11 22:30:00 2
2018-01-11 22:45:00 3
2018-01-12 23:00:00 4
2018-01-12 23:15:00 5
2018-01-12 23:30:00 6
2018-01-12 23:45:00 7
2018-01-12 00:00:00 8

, то есть дата и время отображаются в формате UTC, но в полночь по местному времени день неправильный, т.е. 2018-01-12 23:00:00, когда должно быть 2018-01-11 23:00:00.Теперь в Excel могут быть языковые настройки и параметры отображения, которые мешают, но, может быть, мое использование Pandas уже неверно?

Язык операционной системы установлен на американский английский и никаких специфических настроек для Excel.Версия для Pandas 0.23.0, Python 3.6

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я получаю эту ошибку (с полным обратным отслеживанием):

enter image description here

Как вам удалось получить что-то с вашим кодом?Это то, что я использовал:

import pandas as pd

dt1 = pd.Timestamp('2018-01-11 23:00:00')
dt2 = pd.Timestamp('2018-01-12 01:00:00')

ts = pd.date_range(dt1, dt2, freq='15Min', tz='Europe/Vienna')
values = list(range(ts.shape[0]))

df = pd.DataFrame(values, index=ts)
df.to_excel('test.xlsx')
print ("ready")

Если я удаляю , tz='Europe/Vienna', то это работает вполне нормально:

enter image description here

И вPython я получаю так же, используя print (df):

enter image description here

0 голосов
/ 12 июня 2018

Excel не поддерживает часовые пояса в datetime.Установите tzinfo в объекте datetime / time на None или используйте 'remove_timezone'

ts = pd.date_range(dt1, dt2, freq='15Min')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...