我正在使用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
试试这个:
输出:
相关问题 更多 >
编程相关推荐