l oop из списка для замены в коде для API - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь извлечь данные с помощью API из Интернета. То, что я пытаюсь сделать, это запросить текущие / исторические цены акций определенной компании и сохранить информацию в информационном кадре или в базе данных sqlite. У меня есть код, где я могу получить информацию для одной компании. Но как мне создать al oop, где я могу заменить символ тикера (список кодов, представляющих название каждой компании - для которого у меня есть отдельный фрейм данных) каждой компании и сохранить ее цены. Намерение состоит в том, чтобы хранить цены ВСЕХ компаний (~ 500) в одном кадре данных под их символом тикера. Вот код, по которому я должен вытянуть цену одной акции.

data=requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=NSE:HDFCBANK&outputsize=full&apikey={}'.format(api_key))

Мне нужно заменить NSE: HDFCBANK на список других тикеров в другом фрейме данных, который имеет такой список

df1 = {'Ticker': ['HDFCBANK', 'SBIN', 'ADANIGAS', 'BAJAJAUTO'],
'Name': ['Hdfc Bank', 'State Bank of India', 'Adani Gas', 'Bajaj Auto']}

df1 = pd.DataFrame(df1, columns = ['Ticker', 'Name']) 
df1

Очень плохо знаком с Python. Буду очень признателен за вашу помощь. Спасибо.

1 Ответ

1 голос
/ 04 мая 2020

Подобно списку, вы можете перебирать элементы в столбце кадра данных. Вы можете заменить символ тикера с помощью .format() так же, как вы уже сделали с вашим api_key (значения помещаются в соответствующий {}, присутствующий в строке).

prices = []
for ticker in df1.Ticker:
    data=requests.get('https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=NSE:{}&outputsize=full&apikey={}'.format(ticker, api_key))
    prices.append(data.json()['Time Series (Daily)']['2020-04-30']['1. open'])
df = pd.DataFrame({'symbol':df1.Ticker, 'price':prices})
...