我的证券清单如下:
tickers = ['TLW.L','WEIR.L','RMG.L','TSCO.L','STAN.L','CNA.L']当我调用pandas datareader来提取adj。对于每一个,我得到了一个数据帧,其中所有的报价器都是按字母顺序解析的:
hist_prices = web.DataReader(tickers, 'yahoo', start, today)['Adj Close']
hist_prices.head()
CNA.L RMG.L STAN.L TLW.L TSCO.L WEIR.L
Date
2016-01-04 200.185 417.352 541.7 170.1 142.25 920.617
2016-01-05 202.733 417.543 532.3 164.4 144.40 897.940
2016-01-06 201.600 423.082 515.6 152.7 141.55 876.227
2016-01-07 198.391 418.880 505.8 150.0 139.20 842.452
2016-01-08 196.126 419.644 505.5 138.9 146.90 823.152对于我来说,重要的是按照定义的列表tickers中的报价器的原始顺序对数据帧进行排序,以便稍后将每个价格乘以投资组合中持有的相应股票数量:
n_shares = [1000000, 200000, 1500000, 500000, 2000000, 1500000]以获得聚合值,然后执行投资组合分析。
我搜索了文档以解析处于原始(非字母顺序)状态的资产,但找不到解决方案。
我可以通过各种方式手动完成乘法,但如果我有一个包含100个资产的列表,这就不太可行了。
请帮助我解析原始状态的滚动条,或者如果有更好的替代解决方案,我希望听到它!
提前感谢!
发布于 2017-02-25 04:05:17
您可以使用tickers列表以按所需的顺序选择列:
In [6]: from pandas_datareader import data as web
In [7]: hist_prices = web.DataReader(tickers, 'yahoo', '2016-01-01', '2016-01-08') \
.loc['Adj Close'] \
[tickers] # <------- NOTE
In [8]: hist_prices
Out[8]:
TLW.L WEIR.L RMG.L TSCO.L STAN.L CNA.L
Date
2016-01-04 170.1 920.617 417.352 142.25 541.7 200.185
2016-01-05 164.4 897.940 417.543 144.40 532.3 202.733
2016-01-06 152.7 876.227 423.082 141.55 515.6 201.600
2016-01-07 150.0 842.452 418.880 139.20 505.8 198.391
2016-01-08 138.9 823.152 419.644 146.90 505.5 196.126发布于 2017-02-25 07:38:02
在与'Adj Close'相同的loc中使用tickers
hist_prices = web.DataReader(
tickers, 'yahoo', '2016-01-01', '2016-01-08'
).loc['Adj Close', :, tickers]
hist_prices.head()
TLW.L WEIR.L RMG.L TSCO.L STAN.L CNA.L
Date
2016-01-04 170.1 920.617 417.352 142.25 541.7 200.185
2016-01-05 164.4 897.940 417.543 144.40 532.3 202.733
2016-01-06 152.7 876.227 423.082 141.55 515.6 201.600
2016-01-07 150.0 842.452 418.880 139.20 505.8 198.391
2016-01-08 138.9 823.152 419.644 146.90 505.5 196.126https://stackoverflow.com/questions/42447316
复制相似问题