Как сделать задержку календарного дня в пандах - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь сделать календарную задержку с данными временного ряда, которые я пытаюсь проанализировать.• Для x месячных задержек верните значение x количество месяцев назад.(3-месячная задержка с 17 мая будет данными за 17 февраля).

Есть ли какое-либо решение, доступное непосредственно в pandas.

df_list = pd.date_range(start=min_date, end=max_date,freq='D').to_frame(index=False)
df_list.columns = ['name']
df_list.set_index('name',inplace = True)
df = df_list.reindex(df_list.index - pd.to_timedelta(30, unit='d'), 
method='nearest')

Этот код не может правильно вернуться для 01-маркет с лагом в 1 месяц, который в идеале должен быть 1 февраля.

И 31, 30, 29, 28 марта должно быть 28 февраля (все с задержкой в ​​1 месяц).

1 Ответ

0 голосов
/ 29 ноября 2018

Это pd.offsets.DateOffset(months=1).Это даже дает правильные високосные годы.Используется логика dateutil.relavitedelta, которая вычитает дату по мере необходимости.

import pandas as pd
dates = pd.to_datetime(['2018-03-01', '2018-03-31', '2018-03-30', 
                        '2018-03-29', '2018-03-28', '2016-03-31'])
df = pd.DataFrame({'dates': dates})
#       dates
#0 2018-03-01
#1 2018-03-31
#2 2018-03-30
#3 2018-03-29
#4 2018-03-28
#5 2016-03-31

df.dates - pd.offsets.DateOffset(months=1)
#0   2018-02-01
#1   2018-02-28
#2   2018-02-28
#3   2018-02-28
#4   2018-02-28
#5   2016-02-29
#Name: dates, dtype: datetime64[ns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...