2017-02-24 1 views
2

Liste de mes titres est:Comment effectuer une commande de titres analysés dans Pandas-Datareader dans l'ordre original?

tickers = ['TLW.L','WEIR.L','RMG.L','TSCO.L','STAN.L','CNA.L'] 

Quand j'appelle pandas géants datareader pour extraire adj. près pour chacun, je reçois un dataframe où tous les tickers sont analysés dans l'ordre alphabétique:

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 

Il est important pour moi d'obtenir le dataframe trié dans l'ordre original de tickers comme dans la liste tickers définie pour plus tard se multiplient chaque prix par le nombre correspondant d'actions détenues en portefeuille:

n_shares = [1000000, 200000, 1500000, 500000, 2000000, 1500000] 

d'obtenir des valeurs agrégées et d'effectuer ensuite une analyse de portefeuille.

J'ai recherché dans les documents pour analyser les éléments dans leur état d'origine (non alphabétique), mais je n'ai pas trouvé de solution.

Je pourrais par tous les moyens faire les multiplications manuellement, mais si par exemple j'avais une liste de 100 actifs, ce serait moins faisable.

S'il vous plaît aidez-moi à analyser les tickers dans l'état d'origine, ou s'il y a une meilleure solution alternative, je voudrais l'entendre!

Merci d'avance!

Répondre

2

Vous pouvez utiliser la liste tickers afin de sélectionner vos colonnes dans un ordre souhaité:

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 
1

Utilisez tickers dans le même loc avec 'Adj Close'

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.126