Pandas: Добавить дни к колонке с датами

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

Работа с значениями даты и времени в Pandas может быть пугающим процессом! Изучите, как завершить эту распространенную функцию с помощью простого пошагового.

Короткий ответ: используйте Pandas pd.timedelta()

# Добавить 14 дней к столбцу с датами
df['OriginalDatePlus14'] = df['OriginalDate'] + pd.Timedelta(days=14)

Оглавление

Загрузка образца Pandas Dataframe

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

import pandas as pd

df = pd.DataFrame(
    {'Name': ['Jane', 'Melissa', 'John', 'Matt'],
    'Arrival Date': ['2021-08-01', '2021-04-24', '2021-09-30', '2021-07-13'],
    'Stay Length': [12, 15, 7, 6]})

df['Arrival Date'] = pd.to_datetime(df['Arrival Date'])

print(df)

Обратите внимание, что мы использовали функцию Pandas .to_datetime() для преобразования столбца Arrival Date в тип данных datetime. Это может быть полезно, когда Pandas не может автоматически распознать столбцы как тип datetime

Вывод этого датафрейма

      Name Arrival Date  Stay Length
0     Jane   2021-08-01           12
1  Melissa   2021-04-24           15
2     John   2021-09-31            7
3     Matt   2021-07-13            6

Представим, что эти данные представляют людей, регистрирующихся в курорте. У нас есть три столбца:

  • Name: указывает на имя человека,

  • Arrival Date: дата, когда человек прибыл

  • Stay Length: как долго человек оставался

Используйте Pandas для добавления постоянных дней в столбец дат

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

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

df['Two weeks later'] = df['Arrival Date'] + pd.Timedelta(days=14)

print(df)

Вот что мы сделали:

  1. Создали новый столбец под названием Two weeks later, предназначенный для хранения данных о 14 днях после события.

  2. Мы добавляем объект pd.Timedelta() непосредственно к столбцу Arrival Date

  3. В объект Timedelta() мы передаем days=14 в качестве аргумента

Нам нужно сделать этот шаг, вместо того чтобы, скажем, просто добавить 14, потому что Pandas необходимо указать, что мы хотим добавить 14 дней к нашему столбцу.

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

Используйте Pandas для добавления дней в столбец дат на основе другого столбца

Бывают случаи, когда вы хотите использовать Pandas для добавления дней к одному столбцу на основе значений другого столбца. Например, у вас может быть начальная дата и столбец с количеством дней, и нужно вычислить конечную дату.

Если вы следили за нашим примером, вам может быть интересно, когда гость выехал. Это можно рассчитать, прибавив колонку Arrival Date к колонке Stay Length. Однако, как обсуждалось в предыдущем разделе, мы не можем просто сложить эти две колонки.

Давайте посмотрим, как мы можем использовать Python и Pandas для этого

df['Departure Date'] = df['Arrival Date'] + pd.to_timedelta(df['Stay Length'], unit='D')

print(df)

Здесь мы использовали метод Pandas .to_timedelta(), чтобы преобразовать столбец Stay Length в объект timedelta. Мы сделали это, передав столбец как аргумент и указав 'D' для дней в параметре unit= .

В чем разница между .Timedelta() и .DateOffset()?

Pandas предлагает две разные функции для добавления дней: функцию Pandas .Timedelta() и функцию Pandas .DateOffset(). Разница между этими двумя функциями может быть не сразу видна.

Функция Pandas .Timedelta() всегда будет считать день равным 24 часам, даже когда день может фактически составлять 23 или 25 часов (например, из-за перехода на летнее время). Функция .DateOffset() зависима от часового пояса и будет это учитывать.

Если работа с часовыми поясами является критически важной для вашей работы и вам нужно, чтобы ваши функции это учитывали, используйте функцию .DateOffset() из библиотеки.

Заключение

В этой статье вы узнали, как использовать Pandas для добавления дней к столбцу, как путем добавления постоянного количества дней, так и на основе значения другого столбца. В заключение, вы изучили разницу между функцией Pandas .Timedelta() и функцией Pandas .DateOffset() .

Чтобы узнать больше о Pandas timedelta, ознакомьтесь с официальной документацией. Для получения информации о функции Pandas DateOffset, вы можете ознакомиться с официальной документацией здесь.

Last updated