Как удалить время из DateTime в Pandas [5 способов]

Как удалить время из DateTime в Pandas [5 способов]

Содержание показать

Первый способ: Метод dt.date

Для удаления времени из объекта DateTime в Pandas можно использовать метод dt.date. Этот метод позволяет преобразовать дату и время в объект date.

Исходные данные

Для начала работы нам понадобится DataFrame с столбцом, содержащим значения DateTime. Давайте рассмотрим следующий пример:

import pandas as pd

data = {'date_time': ['2022-06-01 10:30:00', '2022-06-02 14:45:00', '2022-06-03 20:15:00']}
df = pd.DataFrame(data)
df['date_time'] = pd.to_datetime(df['date_time'])

Код примера

Применим метод dt.date к столбцу date_time:

df['date'] = df['date_time'].dt.date

Результат

После выполнения кода у нас появится новый столбец date, содержащий только даты, без времени:

           date_time        date
0 2022-06-01 10:30:00  2022-06-01
1 2022-06-02 14:45:00  2022-06-02
2 2022-06-03 20:15:00  2022-06-03

Теперь мы можем работать с датами без учета времени, что может быть полезно при анализе данных по дням или для других задач, где время не является необходимым фактором.

Читайте так же  Добавление атрибутов к объекту в Python: полное руководство

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

Второй способ: Метод apply

Второй способ удаления времени из объекта DateTime в Pandas – применение метода apply. Этот метод позволяет применить пользовательскую функцию к каждому элементу столбца.

Исходные данные

Для примера возьмем тот же DataFrame, что и в предыдущем разделе:

import pandas as pd

data = {'date_time': ['2022-06-01 10:30:00', '2022-06-02 14:45:00', '2022-06-03 20:15:00']}
df = pd.DataFrame(data)
df['date_time'] = pd.to_datetime(df['date_time'])

Код примера

Создадим пользовательскую функцию, которая будет возвращать только дату из объекта DateTime, и применим ее с помощью метода apply:

def get_date(datetime):
    return datetime.date()

df['date'] = df['date_time'].apply(get_date)

Результат

После выполнения кода мы получим новый столбец date, содержащий только даты:

           date_time        date
0 2022-06-01 10:30:00  2022-06-01
1 2022-06-02 14:45:00  2022-06-02
2 2022-06-03 20:15:00  2022-06-03

Метод apply позволяет более гибко обрабатывать значения в столбце, применяя пользовательскую функцию к каждому элементу. Это может быть полезным при выполнении сложных операций или преобразований с данными, где методы dt недостаточно гибки.

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

Третий способ: Метод to_period

Еще один способ удаления времени из объекта DateTime в Pandas – использование метода to_period. Этот метод позволяет преобразовать дату и время в период, игнорируя значения времени.

Исходные данные

Для примера используем тот же DataFrame с данными date_time:

import pandas as pd

data = {'date_time': ['2022-06-01 10:30:00', '2022-06-02 14:45:00', '2022-06-03 20:15:00']}
df = pd.DataFrame(data)
df['date_time'] = pd.to_datetime(df['date_time'])

Код примера

Применим метод to_period к столбцу date_time:

df['date'] = df['date_time'].dt.to_period('D')

Результат

После выполнения кода получим новый столбец date, содержащий дату в формате периода:

           date_time       date
0 2022-06-01 10:30:00 2022-06-01
1 2022-06-02 14:45:00 2022-06-02
2 2022-06-03 20:15:00 2022-06-03

Метод to_period преобразует значения DateTime в столбце в периоды (например, дни, месяцы, годы), в результате чего время игнорируется и остается только дата.

Читайте так же  Как удалить \ufeff из строки в Python: подробное руководство

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

Четвертый способ: Модуль dateutil

Четвертым способом удаления времени из объекта DateTime в Pandas является использование модуля dateutil. Этот модуль предоставляет больше гибкости при работе с датами и временем.

Исходные данные

Для примера возьмем тот же DataFrame с данными date_time:

import pandas as pd

data = {'date_time': ['2022-06-01 10:30:00', '2022-06-02 14:45:00', '2022-06-03 20:15:00']}
df = pd.DataFrame(data)
df['date_time'] = pd.to_datetime(df['date_time'])

Код примера

Импортируем модуль dateutil и используем функцию parser.parse для преобразования объекта DateTime в дату:

from dateutil import parser

df['date'] = df['date_time'].apply(lambda x: parser.parse(str(x)).date())

Результат

После выполнения кода получим новый столбец date с удаленным временем:

           date_time        date
0 2022-06-01 10:30:00  2022-06-01
1 2022-06-02 14:45:00  2022-06-02
2 2022-06-03 20:15:00  2022-06-03

Модуль dateutil позволяет более гибко обрабатывать и преобразовывать даты и время. Функция parser.parse позволяет разобрать строку с датой и временем и получить объект DateTime, а затем с помощью метода date() извлечь только дату.

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

Пятый способ: Метод astype

Пятый способ удаления времени из объекта DateTime в Pandas – использование метода astype. Этот метод позволяет преобразовать тип данных столбца в другой тип, например, из DateTime в date.

Исходные данные

Для примера возьмем тот же DataFrame с данными date_time:

import pandas as pd

data = {'date_time': ['2022-06-01 10:30:00', '2022-06-02 14:45:00', '2022-06-03 20:15:00']}
df = pd.DataFrame(data)
df['date_time'] = pd.to_datetime(df['date_time'])

Код примера

Преобразуем тип данных столбца date_time в date с помощью метода astype:

df['date'] = df['date_time'].dt.date.astype('datetime64')

Результат

После выполнения кода получим новый столбец date, содержащий только даты без времени:

           date_time       date
0 2022-06-01 10:30:00 2022-06-01
1 2022-06-02 14:45:00 2022-06-02
2 2022-06-03 20:15:00 2022-06-03

Метод astype позволяет преобразовать тип данных столбца к указанному типу. В нашем случае мы преобразовали тип данных date в объект datetime64, чтобы сохранить только даты.

Читайте так же  Как изменить ширину столбцов в DataFrame с использованием Pandas: практическое руководство

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст

подраздел (здесь должно быть название подраздела которое мы сгенерировали ранее)

текст