Python 过去二十年假期前十天的历史股价

Python 过去二十年假期前十天的历史股价,python,dictionary,yahoo-finance,Python,Dictionary,Yahoo Finance,尽管我还是一个noob,但我已经热情地学习Python有一段时间了,下面是我正在进行的一个项目。我需要在过去二十年的美国公众假期前十天收集历史股价,以下是我所做的:(我在这里使用了pandas_datareader和holidays) 结果是这样的: Freq: B, Name: Adj Close, dtype: float64, 1995-02-06 32.707565 1995-02-07 32.749946 1995-02-08 32.749946 1995-02

尽管我还是一个noob,但我已经热情地学习Python有一段时间了,下面是我正在进行的一个项目。我需要在过去二十年的美国公众假期前十天收集历史股价,以下是我所做的:(我在这里使用了pandas_datareader和holidays)

结果是这样的:

Freq: B, Name: Adj Close, dtype: float64, 1995-02-06    32.707565
 1995-02-07    32.749946
 1995-02-08    32.749946
 1995-02-09    32.749946
 1995-02-10    32.792328
 1995-02-13    32.802975
 1995-02-14    32.845356
 1995-02-15    33.025457
 1995-02-16    32.983076
 1995-02-17    32.855933
 1995-02-20          NaN
“测试”列表的长度为233。我的问题是:如何将这个列表转换成一个字典,其中假日是键,股票价格是每个键下的值


提前感谢您的指导

这使用字典和列表理解,在每个假期前生成一组十个美国工作日。然后,这些天的股票价格作为价格列表存储在字典中(在假日输入),最新的第一个(h-1)和最旧的最后一个(h-10)


新年前十天将与圣诞节重叠。你的功能不能解释这一点。是的,我知道。从技术上讲,我仍然可以在新年前十个工作日提取股票价格,只是跳过了圣诞节。
Freq: B, Name: Adj Close, dtype: float64, 1995-02-06    32.707565
 1995-02-07    32.749946
 1995-02-08    32.749946
 1995-02-09    32.749946
 1995-02-10    32.792328
 1995-02-13    32.802975
 1995-02-14    32.845356
 1995-02-15    33.025457
 1995-02-16    32.983076
 1995-02-17    32.855933
 1995-02-20          NaN
from pandas.tseries.holiday import USFederalHolidayCalendar
from pandas.tseries.offsets import CustomBusinessDay

holidays = USFederalHolidayCalendar().holidays(start='1995-1-1', end='2015-12-31')
bday_us = CustomBusinessDay(calendar=USFederalHolidayCalendar())

start = '1995-01-01'
end = '2015-12-31'
days = 10

dates = {holiday: [holiday - bday_us * n for n in range(1, days + 1)]  
         for holiday in USFederalHolidayCalendar().holidays(start=start, end=end)}

>>> dates
{...
Timestamp('2015-12-25 00:00:00'): [
    Timestamp('2015-12-24 00:00:00'),
    Timestamp('2015-12-23 00:00:00'),
    Timestamp('2015-12-22 00:00:00'),
    Timestamp('2015-12-21 00:00:00'),
    Timestamp('2015-12-18 00:00:00'),
    Timestamp('2015-12-17 00:00:00'),
    Timestamp('2015-12-16 00:00:00'),
    Timestamp('2015-12-15 00:00:00'),
    Timestamp('2015-12-14 00:00:00'),
    Timestamp('2015-12-11 00:00:00')]}

result = {holiday: history_price.ix[dates[holiday]].values for holiday in dates}

>>> result
{...
 Timestamp('2015-12-25 00:00:00'): 
   array([ 203.56598 ,  203.902497,  201.408393,  199.597201,  197.964166,
           201.55487 ,  204.673725,  201.722125,  199.626485,  198.622952])}