Панды - конвертировать десятичную дату из read_excel - PullRequest
0 голосов
/ 29 января 2019

Я преобразовал некоторые файлы Excel, используя панды в CSV.Я заметил, что дата в десятичном формате сейчас.Однако мне не ясно, как конвертировать в datetime или хотя бы в метку времени.

Таким образом, конвертированные даты выглядят так:

42794.741667

Я понял, что до десятичного числадни с 1900 года, но я не нахожу ничего относительно второй части десятичного числа.Многие вопросы предлагают напрямую конвертировать из read_excel: pandas, дата автоматического конвертирования .Однако я не могу этого сделать, так как файлы Excel довольно сложны и не имеют предопределенной структуры.

1 Ответ

0 голосов
/ 29 января 2019

Даты Excel - это не дни с 1970 года, а дни с 30 декабря 1899 года.(Возможно, вы думаете о метках времени Posix, которые являются секундами с 1 января 1970 года.)

Excel сообщает, что 1-й день - 1 января 1900 года (что подразумевает эпоху 31 декабря 1899 года), ноВ Excel также считают, что 1900 год был високосным, а этого не было, поэтому счет в Excel для дат с 1 января 1900 года по 28 февраля 1900 года не учитывается.

Такое поведение является преднамеренным.В первые дни, Excel конкурировал с лидером рынка, Lotus 1-2-3, который также думал, что 1900 год был високосным, и к тому времени, когда люди начали беспокоиться об этом, это считалось слишком разрушительным, чтобы его исправить.

Вы можете конвертировать даты Excel в Python datetime s, которые pandas будут понимать следующим образом:

>>> import datetime
>>> datetime.datetime(1899,12,30) + datetime.timedelta(days=42794.741667)
datetime.datetime(2017, 2, 28, 17, 48, 0, 28800)

Если вы вставите 42794.741667 в пустую электронную таблицу Excel и отформатируете ее как дату,Вы можете подтвердить преобразование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...