Интеллектуальное преобразование строк в формат даты и времени
Преобразование входных строк в формат даты и времени стоит в основе подготовки данных для ряда моделей машинного обучения. В этой статье рассмотрим инструментарий Pandas, позволяющий решить указанную задачу.
Всю самую сложную работу сделает за вас функция to_datetime. Можно попытаться запустить ее без дополнительных параметров, тогда формат передаваемых строк она определит самостоятельно:
import pandas as pd ser = pd.Series(['2022-02-01', '13-01-12', '20-01-2012', None]) pd.to_datetime(ser)
Однако, такой способ не очень надежен, так как не совсем понятно как интерпретировать вторую строку (год в начале или в конце?). Поэтому рекомендую применять функцию с параметром format, в котором передавать "пояснительную" строку с описанием формата передачи даты и времени:
pd.to_datetime(ser, format = '%Y-%m-%d', errors='coerce')
Обратите внимание на параметр errors='coerce', который заменяет нераспарсенные даты на NaT. По умолчанию мы бы получили исключение:
Следует отметить, что служебные обозначения для параметра формата можно найти здесь:
Еще интересна комбинация параметров unit и origin, которая позволяет задать единицы времени и дату начала отсчета. По умолчанию, origin=‘unix’, что инициирует отсчет с 1970-01-01. А в параметре unit могут указываться такие единицы как День (D), секунда (s), миллисекунда (ms), микросекунда (us), наносекунда(ns):
pd.to_datetime([1590295805, 1480295805], unit='s')
pd.to_datetime([1, 60, 80], unit='D', origin=pd.Timestamp('2020-01-01'))