> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/uchebniki-po-pandas-i-numpy/pandas/pandas-to_datetime-preobrazovanie-stroki-pandas-v-datu-i-vremya.md).

# Pandas to\_datetime: Преобразование строки Pandas в дату и время

В этом уроке **вы узнаете, как использовать функцию Pandas to\_datetime для преобразования столбца Pandas в дату и время.** Pandas предоставляет огромное количество методов и функций, которые делают работу с датами невероятно универсальной. Однако данные не всегда читаются правильно.

К концу этого учебного пособия вы узнаете:

* Как использовать функцию Pandas to\_datetime для преобразования столбца в дату и время
* Как указать коды формата для преобразования строк в разные форматы
* Преобразование целых чисел секунд и дат в дату и время в Pandas

Оглавление

* [Понимание функции Pandas to\_datetime](#ponimanie-funkcii-pandas-to_datetime)
* [Используйте Pandas to\_datetime для преобразования столбца в дату и время](#ispolzuite-pandas-to_datetime-dlya-preobrazovaniya-stolbca-v-datu-i-vremya)
* [Укажите форматы даты и времени в Pandas to\_datetime](#ukazhite-formaty-daty-i-vremeni-v-pandas-to_datetime)
* [Преобразование целых дней Unix в DateTime в Pandas](#preobrazovanie-celykh-dnei-unix-v-datetime-v-pandas)
* [Преобразование целых секунд в DateTime в Pandas](#preobrazovanie-celykh-sekund-v-datetime-v-pandas)
* [Преобразование нескольких столбцов Pandas в DateTime](#preobrazovanie-neskolkikh-stolbcov-pandas-v-datetime)
* [Заключение](#zaklyuchenie)
* [Дополнительные ресурсы](#dopolnitelnye-resursy)

### Понимание функции Pandas to\_datetime

Давайте начнем с изучения функции Pandas `to_datetime()`, которая позволяет передать серию Pandas для преобразования ее в дату и время. Функция предоставляет множество универсальных параметров, которые позволяют настроить поведение.

Давайте взглянем на эти параметры:

```python
# Понимание функции Pandas to_datetime()
pd.to_datetime(
    arg,                            # Столбец для преобразования
    errors='raise',                 # Как обрабатывать ошибки
    dayfirst=False,                 # Указывает, что дни идут первыми
    yearfirst=False,                # Указывает, что годы идут первыми
    utc=None,                       # Указывает, как обрабатывать часовой пояс UTC
    format=None,                    # Формат strftime для разбора
    exact=True,                     # Указывает, нужно ли искать точное совпадение
    unit=None,                      # Единица измерения, если используется целочисленный временной штамп
    infer_datetime_format=False,    # Указывает, нужно ли определять формат автоматически
    origin='unix',                  # Определяет эталонную дату
    cache=True                      # Указывает, использовать ли кэш для ускорения работы с одинаковыми датами
    )     
```

Как видно, функция имеет огромное количество доступных параметров. В этом учебном пособии мы сосредоточимся на основных параметрах, которые охватывают большинство случаев использования функции.

### Используйте Pandas to\_datetime для преобразования столбца в дату и время

Давайте начнем с простого преобразования строкового столбца в дату и время. Мы можем загрузить Pandas DataFrame ниже и вывести его типы данных с помощью метода `info()`:

```python
import pandas as pd

df = pd.DataFrame(['2022-04-01',
'2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05'], columns=['Date'])
print(df.info())

# Возвращает:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5 записей, от 0 до 4
# Столбцы данных (всего 1 столбец):
#  #   Столбец  Количество ненулевых значений  Тип данных 
# ---  ------  ------------------------------  ---------- 
#  0   Date    5 ненулевых                    object
# типы данных: object(1)
# используемая память: 168.0+ байт
# None
```

Хотя данные выглядят как даты, на самом деле они отформатированы как строки. Давайте посмотрим, как мы можем использовать функцию Pandas to\_datetime для преобразования строки в дату и время.

```python
# Преобразование столбца в тип данных "Дата и время" в Pandas
import pandas as pd

df = pd.DataFrame(['2022-04-01',
'2022-04-02', '2022-04-03', '2022-04-04', '2022-04-05'], columns=['Date'])
df['Date'] = pd.to_datetime(df['Date'])
print(df.info())

# Возвращает:
# <class 'pandas.core.frame.DataFrame'>
# RangeIndex: 5 записей, от 0 до 4
# Столбцы данных (всего 1 столбец):
#  #   Столбец  Количество ненулевых значений  Тип данных       
# ---  ------  ------------------------------  ----------       
#  0   Date    5 ненулевых                    datetime64[ns]
# типы данных: datetime64 
# используемая память: 168.0 байт
# None

```

Pandas смог распознать формат даты и корректно преобразовал строку в тип данных datetime. В следующем разделе вы узнаете, как задавать конкретные форматы.

### Укажите форматы даты и времени в Pandas to\_datetime

Часто бывает, что вы получаете столбец с датами в формате, который Pandas не может сразу определить. В таких случаях вы можете использовать параметр `format=`, чтобы указать конкретную строку формата. Эти [строки следуют соглашениям strftime](https://datagy.io/python-strftime/), которые распространены во многих языках программирования.

Загрузим DataFrame с необычной строкой форматирования:

```python
# Загрузка странного формата даты
import pandas as pd

df = pd.DataFrame(['2022-04-*-01', '2022-04-*-02', '2022-04-*-03', '2022-04-*-04', '2022-04-*-05'], columns=['Date'])
print(df)

# Возвращает:
#            Date
# 0  2022-04-*-01
# 1  2022-04-*-02
# 2  2022-04-*-03
# 3  2022-04-*-04
# 4  2022-04-*-05
```

Давайте использовать параметр `format=`, чтобы указать пользовательский формат:

```python
# Преобразование столбца в тип данных "Дата и время" в Pandas
import pandas as pd

df = pd.DataFrame(['2022-04-*-01', '2022-04-*-02', '2022-04-*-03', '2022-04-*-04', '2022-04-*-05'], columns=['Date'])
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-*-%d')

print(df)

# Возвращает:
#         Date
# 0 2022-04-01
# 1 2022-04-02
# 2 2022-04-03
# 3 2022-04-04
# 4 2022-04-05
```

Мы видим на примере выше, что задав пользовательскую строку формата, Pandas может правильно определить формат даты.

### Преобразование целых дней Unix в DateTime в Pandas

Еще одно мощное преобразование, которое предоставляет Pandas, - это преобразование целых чисел в Unix-дни. Это можно сделать, передав серию целых чисел в объект времени. Для этого необходимо указать параметр `unit=`, чтобы указать дни, что означает, что целые числа представляют собой дни от заданного начала.

По умолчанию Pandas будет использовать `'unix'` origin, который представляет собой 1 января 1970 года в 00:00:00 UTC. Посмотрим, как мы можем преобразовать столбец целых чисел в объект даты и времени:

```python
# Преобразование целого числа в дату и время в Pandas
import pandas as pd

df = pd.DataFrame([12345, 23453, 12324, 34534, 12313], columns=['Дата'])
df['Дата'] = pd.to_datetime(df['Дата'], unit='D')

print(df)

# Возвращает:
#         Дата
# 0 2003-10-20
# 1 2034-03-19
# 2 2003-09-29
# 3 2064-07-20
# 4 2003-09-18
```

Поскольку Pandas использует `'unix'` в качестве значения по умолчанию для `origin=`, нам не нужно было указывать это.

### Преобразование целых секунд в DateTime в Pandas

В ситуациях, когда необходимо преобразовать значения целых чисел, представляющих секунды, это работает так же, как в приведенном выше примере, за исключением того, что необходимо указать `unit='s'` в качестве параметра:

```python
# Преобразование столбца целых чисел в дату и время в Pandas
import pandas as pd

df = pd.DataFrame([12345, 23453, 12324, 34534, 12313], columns=['Дата'])
df['Дата'] = pd.to_datetime(df['Дата'], unit='s')

print(df)

# Возвращает:
#                  Дата
# 0 1970-01-01 03:25:45
# 1 1970-01-01 06:30:53
# 2 1970-01-01 03:25:24
# 3 1970-01-01 09:35:34
# 4 1970-01-01 03:25:13
```

В последнем разделе вы узнаете, как конвертировать несколько столбцов Pandas в datetime.

### Преобразование нескольких столбцов Pandas в DateTime

Чтобы преобразовать несколько столбцов в datetime в Pandas, можно использовать сочетание функций Pandas apply и to\_datetime. Метод `.apply()` применяется к разделу нескольких столбцов, а функция `to_datetime()` внутри него.

Давайте посмотрим, как мы можем сделать это с помощью Pandas:

```python
# Преобразование нескольких столбцов в дату и время в Pandas
import pandas as pd

df = pd.DataFrame(
    [['2022-04-01', '2022-05-01'],
    ['2022-04-02', '2022-05-02'],
    ['2022-04-03', '2022-05-03'],
    ['2022-04-04', '2022-05-04'],
    ['2022-04-05', '2022-05-05']], columns=['Дата1', 'Дата2'])

df[['Дата1', 'Дата2']] = df[['Дата1', 'Дата2']].apply(pd.to_datetime)

print(df)

# Возвращает:
#        Дата1      Дата2
# 0 2022-04-01 2022-05-01
# 1 2022-04-02 2022-05-02
# 2 2022-04-03 2022-05-03
# 3 2022-04-04 2022-05-04
# 4 2022-04-05 2022-05-05
```

В приведенном выше примере функция `pd.to_datetime` была передана методу `.apply()`, чтобы преобразовать несколько столбцов в формат даты и времени.

### Заключение

В этом уроке вы узнали, как использовать функцию Pandas to\_datetime для преобразования столбца в тип данных datetime. Вы узнали, как делать это с использованием строк и целых чисел. Вы также узнали, как преобразовать несколько столбцов в тип данных datetime с помощью метода `.apply()`

### Дополнительные ресурсы

Чтобы узнать больше о связанных темах, ознакомьтесь с уроками ниже:

* DateTime в Pandas и Python
* Части даты и времени Pandas (месяц, год и т. д.)
* Преобразование даты в строку в Python: объяснение strftime в Python
* Pandas: добавление дней в столбец даты
* [Официальная документация: Pandas to\_datetime](https://pandas.pydata.org/docs/reference/api/pandas.to_datetime.html)
