Конечно, вы можете использовать переменную вместо жесткого кодирования тикера:
ticker = Equity_Tickers[0] # FB
data = pdr.DataReader(ticker, 'yahoo', start, end)
Чтобы создать цикл, вы можете сделать что-то вроде:
for ticker in Equity_Tickers:
data = pdr.DataReader(ticker, 'yahoo', start, end)
df = data[['Adj Close']]
Хитростьхранение переменной df
в каждой итерации цикла вместо ее перезаписи.Одним из решений является сохранение каждого DataFrame в списке или словаре.
frames = []
for ticker in Equity_Tickers:
data = pdr.DataReader(ticker, 'yahoo', start, end)
frames.append(data[['Adj Close']])
# eg, use frames[0] to access first ticker's DataFrame
ИЛИ
frames = {}
for ticker in Equity_Tickers:
data = pdr.DataReader(ticker, 'yahoo', start, end)
frames[ticker] = data[['Adj Close']]
# eg, use frames['FB'] to access FB ticker's DataFrame
Если вы действительно хотите, вы можете также использовать понимание списка / словарь, чтобы выполнить это в одной строке:
# list comprehension
frames = [pdr.DataReader(t, 'yahoo', start, end)[['Adj Close']] for t in Equity_Tickers]
# dict comprehension
frames = {t: pdr.DataReader(t, 'yahoo', start, end)[['Adj Close']] for t in Equity_Tickers}
Дополнительное примечание: Вы также можете рассмотреть возможность объединения фреймов в один большой DataFrame, возможно, аккуратный стильDataFrame где "ticker" - это поле для каждой строки.