Pandas DataReader:规范化日期

时间:2017-12-23 13:28:06

标签: python pandas pandas-datareader

我使用pandas数据阅读器包从fred,yahoo finance等网站提取经济时间序列。我从“弗雷德”中汲取了经济衰退(USREC)系列。来自雅虎财经的网站和历史sp500(^ GSPC)。

历史上的美国经济衰退:

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

我想合并两个数据框,但其中一个具有月份的开始日期,而另一个具有该月份的结束日期。如何制作a)日期栏yyyy-mm b)要么是月份开始月份还是月末制作日期栏?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以在月份开始时使用MS进行重新采样:

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

或者可以在PeriodIndex月使用to_period

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')