Я использую YahooFinancials, чтобы получить цену акций и объем для списка нескольких компаний. Я могу извлекать цены и объем в отдельные фреймы данных, но хотел бы получить и цену, и объем в одном фреймворке без необходимости их объединения постфактум. Я считаю, что мне нужно понимание вложенного списка, но я не совсем уверен, как этого добиться?
Мой код выглядит следующим образом:
import pandas as pd
from pandas.io.json import json_normalize
import numpy as np
from yahoofinancials import YahooFinancials
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import date, timedelta
import warnings
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
plt.style.use('seaborn')
start = date(2007,1,1)
end = date(2020,6,4)
today = date.today()
tomorrow = str(end + timedelta(days=1))
portfolio = ['AMZN', 'GOOGL', 'MSFT']
yahoo_financials = YahooFinancials(portfolio)
data = yahoo_financials.get_historical_price_data(start_date=str(start), end_date=str(today), time_interval='daily')
prices = pd.DataFrame({a: {x['formatted_date']: x['adjclose'] for x in data[a]['prices']} for a in portfolio})
volume = pd.DataFrame({a: {x['formatted_date']: x['volume'] for x in data[a]['prices']} for a in portfolio})
В идеале результат выглядит примерно так это:
date AMZNPrice AMZNVolume GOOGLPrice GOOGLVolume MSFTPrice MSFTVolume
6/9/2020 2600.860107 5176000 1452.079956 1681200 189.800003 29783900
6/10/2020 2647.449951 4946000 1464.699951 1588100 196.839996 43872300
6/11/2020 2557.959961 5800100 1401.900024 2357200 186.270004 52854700
6/12/2020 2545.02002 5429600 1412.920044 1832900 187.740005 43345700
6/15/2020 2572.679932 3865100 1420.73999 1523400 188.940002 32712500