Pandas DataReader: нормализация дат

Я использую пакет для чтения данных pandas для извлечения экономических временных рядов с веб-сайта, такого как fred, yahoo Finance. Я взял серию рецессий США (USREC) с веб-сайта «fred» и исторические данные sp500 (^GSPC) с Yahoo Finance.

Историческая рецессия в США:

web.DataReader("USREC", "fred", start, end)

Выход:

2017-08-01      0
2017-09-01      0
2017-10-01      0
2017-11-01      0

S&P500 возвращается

web.DataReader("^GSPC",'yahoo',start,end)['Close'].to_frame().resample('M').mean().round()

Выход:

2017-08-31  2456.0
2017-09-30  2493.0
2017-10-31  2557.0
2017-11-30  2594.0

Я хочу объединить два кадра данных, но у одного есть начальная дата месяца, а у другого - конечная дата месяца. Как мне сделать а) столбец даты yyyy-mm b) либо сделать столбец даты обоих фреймов началом месяца или концом месяца?

Спасибо за помощь!


person Zenvega    schedule 23.12.2017    source источник


Ответы (1)


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

web.DataReader("^GSPC",'yahoo',start,end)['Close'].to_frame().resample('MS').mean().round()

Или можно использовать to_period для месяца PeriodIndex :

df1 = df1.to_period('M')
df2 = df2.to_period('M')
print (df1)
         Close
2017-08      0
2017-09      0
2017-10      0
2017-11      0

print (df2)
          Close
2017-08  2456.0
2017-09  2493.0
2017-10  2557.0
2017-11  2594.0

print (df1.index)
PeriodIndex(['2017-08', '2017-09', '2017-10', '2017-11'], dtype='period[M]', freq='M')

print (df2.index)
PeriodIndex(['2017-08', '2017-09', '2017-10', '2017-11'], dtype='period[M]', freq='M')
person jezrael    schedule 23.12.2017