У меня есть серия 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
]
зачем тебе вообще нужен сериал, если это всего лишь одно свидание?
Потому что он поступает из внешнего источника и может содержать больше дней в зависимости от установленных флагов.
Вы можете получить 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]
Вопрос о библиотеке Polars DataFrame. github.com/pola-rs/polars
Я не видел тега python-polar
А как насчет использования 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()
Можете ли вы предоставить пример серии в виде кода вместо повтора?