Добавить X дней в серию Datetime

У меня есть серия Datetime, которая всегда содержит дату и время вчерашнего дня, например:

Series: '' [datetime[ns]]
[
    2024-08-29 00:00:00
]

Как я могу добавить 2 дня к этой серии Datetime, чтобы добавить дату и время 2 дня и 3 дня назад?

Конечный результат должен быть:

Series: '' [datetime[ns]]
[
    2024-08-29 00:00:00
    2024-08-28 00:00:00
    2024-08-27 00:00:00
]

🤔 А знаете ли вы, что...
Python - это универсальный язык программирования.


1
86
3

Ответы:

Вы можете получить k дней спустя или k дней назад, используя pd.Timedelta(f"{k} day")

time_series = pd.Series(np.datetime64("2024-08-29 00:00:00"))

time = time_series[0]
for k in [1, 2]:
  time_series[k] =  (time - pd.Timedelta(f"{k} day"))

output: 
0   2024-08-29
1   2024-08-28
2   2024-08-27
dtype: datetime64[ns]

А как насчет использования date_range:

X = 2
date = series[0] # get date
# create X extra days
out = pl.date_range(date, date+timedelta(days=X), '1d', eager=True)

Выход:

shape: (3,)
Series: 'literal' [date]
[
    2024-08-29
    2024-08-30
    2024-08-31
]

Решено

pl.date_range можно использовать вместе с pl.Series.dt.offset_by для создания даты начала.

pl.date_range(dates.dt.offset_by("-2d"), dates, eager=True)
shape: (3,)
Series: 'dates' [date]
[
    2024-08-27
    2024-08-28
    2024-08-29
]

Если ряд требуется в порядке убывания, его можно впоследствии обратить вспять, используя pl.Series.reverse.

pl.date_range(dates.dt.offset_by("-2d"), dates, eager=True).reverse()