2016-06-17 2 views
0

Я ищу эквивалентную спецификацию для W-MON (еженедельно, заканчивая в понедельник) для ежемесячных данных.Реаметр с пользовательской месячной частотой

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

Так что если сегодня 17/06/2016, мой индекс дата будет 17/06/2016, 17/05/2016, 17/04/2016 ... и т.д.

Прямо сейчас я могу только найти месяц-начало и конец месяца как спецификации для df.asfreq().

Спасибо.

+0

насчет привязывая их к началу месяца, затем добавить timedelta в соответствующие дни? (Не совсем уверен, что будет работать с месяцами, которые не имеют необходимого количества дней, хотя ...) –

+1

Каков ваш желаемый результат, когда сегодня 31 января? Очевидно, что у вас не может быть 31 февраля – FLab

ответ

0

Вы можете создать соответствующие даты с помощью relativedelta и выберите с помощью .loc[]:

from datetime import datetime 
from dateutil.relativedelta import relativedelta 
from pandas_datareader.data import DataReader 

Используя ежедневные данные выборки:

stock_data = DataReader('FB', 'yahoo', datetime(2013, 1, 1), datetime.today()).resample('D').fillna(method='ffill')['Open'] 

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

today = date(2016, 1, 31) 

Создать последовательность дат:

n_months = 30 
dates = [today - relativedelta(years=m // 12, months=m % 12) for m in range(n_months)] 

получить:

stock_data.loc[dates] 

Date 
2016-01-31 108.989998 
2015-12-31 106.000000 
2015-11-30 105.839996 
2015-10-31 104.510002 
2015-09-30  88.440002 
2015-08-31  90.599998 
2015-07-31  94.949997 
2015-06-30  86.599998 
2015-05-31  79.949997 
2015-04-30  80.010002 
2015-03-31  82.900002 
2015-02-28  80.680000 
2015-01-31  78.000000 
2014-12-31  79.540001 
2014-11-30  77.669998 
2014-10-31  74.930000 
2014-09-30  79.349998 
2014-08-31  74.300003 
2014-07-31  74.000000 
2014-06-30  67.459999 
2014-05-31  63.950001 
2014-04-30  57.580002 
2014-03-31  60.779999 
2014-02-28  69.470001 
2014-01-31  60.470001 
2013-12-31  54.119999 
2013-11-30  46.750000 
2013-10-31  47.160000 
2013-09-30  50.139999 
2013-08-31  42.020000 
Name: Open, dtype: float64 
Смежные вопросы