Я обнаружил, что DataReader выполняет итерацию по самому списку, поэтому нет необходимости создавать словарь для итерации.
Следующие строки кода достигают того, что я искал, что является альтернативой объединениюнесколько фреймов данных из каждого биржевого тикера, чтобы не указывать DataReader для каждого символа.
- Устанавливает диапазоны дат:
start = datetime.datetime(2006,1,1)
end = datetime.datetime(2016,1,1)
Указывает символы:
list_of_tickers = ['BAC','C','GS','JPM','MS','WFC']
Перебирает каждый тикер, создает один многоуровневый столбец данных:
p = data.DataReader(list_of_tickers, 'yahoo', start, end)
ДОПОЛНИТЕЛЬНО: Затем поверните уровень столбца «символы» и замените индекс даты, чтобы его можно было использовать в анализе:
res = p.stack().reset_index()
ДОПОЛНИТЕЛЬНО: Этот шаг не является обязательным и был чисто эстетическим, чтобы очистить FrozenList и индексные имена:
res.columns.names=[None]
res.index.names = ['ID']