2017-03-19 16 views
1

データフレームの列に配列を掛け、これらの列をデータフレーム内の新しい列に合計するにはどうすればよいですか?列を追加するデータフレームのPythonと配列の数値を乗算する

私は以下のコードでそれを試みたが、何とか間違った番号を取得:コードは次のようになります

    AAPL Portfolio   ACN 
Date           
2017-01-03 116.150002 1046.900003 116.459999 
2017-01-04 116.019997 1047.779978 116.739998 
2017-01-05 116.610001 1041.389994 114.989998 
2017-01-06 117.910004 1053.140031 116.300003 
... 

:それはのようになりますどのように

    AAPL Portfolio   ACN 
Date           
2017-01-03 116.150002 1860.880008 116.459999 
2017-01-04 116.019997 1862.079960 116.739998 
2017-01-05 116.610001 1852.799992 114.989998 
2017-01-06 117.910004 1873.680056 116.300003 
... 

を以下です。 ...

+0

あなたの質問はありますか? – DyZ

+0

@DYZ、上記のように、私はそのポジションに専用価格を掛けて、1日あたりの列を追加したいと考えています。それは明確ですか? – MCM

+0

これはまだ問題ではありません。 SOはQ&Aサイトです。あなたが明確な質問をしない限り、あなたは答えを得ることはできません。 – DyZ

答えて

1

必要がある場合は

2017-01-03: 116.150002*4+116.150002*5 
2017-01-03: 116.019997*4+116.739998*5 

など:

を私が欲しいもの

import pandas_datareader.data as pdr 
import pandas as pd 
import datetime 

start = datetime.datetime(2017, 1, 1) 
end = datetime.datetime(2017, 3, 17) 

ticker_list = ["AAPL","ACN"] 
position_size = [4,5] 

for i in range(0,len(ticker_list)): 
    #print(i) 
    DataInitial = pdr.DataReader(ticker_list[i], 'yahoo', start, end) 
    ClosingPrices[ticker_list[i]] = DataInitial[['Close']] 
    ClosingPrices['Portfolio'] = ClosingPrices['Portfolio'] + ClosingPrices[ticker_list[i]]*position_size[i] 
print(ClosingPrices) 

は実際にある:私はあまりにも複雑思っていますので、コードは意味がないことかもしれません

2017-01-03: 116.150002*4+116.150002*5 
2017-01-03: 116.019997*4+116.739998*5 

dictと最後のの値を持つ複数の列のconcatを使用しますすべての列をまとめて:

ticker_list = ["AAPL","ACN"] 
position_size = [4,5] 
d = dict(zip(ticker_list,position_size)) 

print (pd.concat([ClosingPrices[col] * d[col] for col in ticker_list], axis=1)) 
        AAPL   ACN 
Date        
2017-01-03 400.000000 500.000000 
2017-01-04 464.079988 583.699990 
2017-01-05 466.440004 574.949990 
2017-01-06 471.640016 581.500015 

ClosingPrices['Portfolio'] = pd.concat([ClosingPrices[col] * d[col] for col in ticker_list], 
             axis=1).sum(axis=1) 
print (ClosingPrices) 
        AAPL Portfolio   ACN 
Date           
2017-01-03 100.000000 900.000000 100.000000 <-for testing values was changed to 100 
2017-01-04 116.019997 1047.779978 116.739998 
2017-01-05 116.610001 1041.389994 114.989998 
2017-01-06 117.910004 1053.140031 116.300003 
+0

ありがとう、これは私が探していたものです。 – MCM

関連する問題