2017-10-24 4 views
0

df:auxにはブール値が含まれ、rtrnMには月間リターンが含まれます。私はauxとrtrnMを乗算して、auxがTRUEである毎月のリターンでdfを得ることを(断片的に)求めています。その後、1行あたりの結果の算術平均を計算したいと思います。 これはAUXとrtrnMがどのように見えるかです:numpyを使用して2つのDFを掛け、1行あたりの平均を計算します。

In [341]: aux.tail() 
Out[341]: 
       IWB SPY VGK IEV EWJ EPP IEF SHY IAU 
2017-06-30 False False True True True False False False False 
2017-07-31 True False False False True True False False False 
2017-08-31 False False True True False True False False False 
2017-09-29 False False False False False True True False True 
2017-10-31 True False True True False False False False False 

In [342]: rtrnM.tail() 
Out[342]: 
       IWB  SPY  VGK  IEV  EWJ  EPP \ 
2017-06-30 0.007147 0.006374 -0.005148 -0.005326 0.013241 0.022903 
2017-07-31 0.019115 0.020554 0.028291 0.026850 0.020690 0.044065 
2017-08-31 0.003207 0.002918 0.000707 -0.000879 -0.000913 0.004091 
2017-09-29 0.020612 0.020141 0.032114 0.030790 0.018278 -0.008364 
2017-10-31 0.023163 0.023405 0.001372 0.003200 0.032490 0.024870 

       IEF  SHY  IAU 
2017-06-30 -0.005097 -0.000786 -0.021311 
2017-07-31 0.003756 0.001860 0.023451 
2017-08-31 0.014574 0.002022 0.040917 
2017-09-29 -0.014407 -0.001867 -0.032233 
2017-10-31 -0.003018 -0.001037 -0.000812 

はこれを試してみました:

result = pd.DataFrame((aux * rtrnM).mean(axis=1),columns=['mthly']) 

を私に正しい結果が得られません。どんな助けもありがとう。 numpyを推測することは道のりです。

答えて

1

ええ、meanは、0値も含めて、すべての値の平均値を示します。

修正が簡単です。 sumを呼び出し、非ゼロ値の数で除算します。

(aux * rtrnM).sum(1)/aux.sum(1) 

2017-06-30 0.000922 
2017-07-31 0.027957 
2017-08-31 0.001306 
2017-09-29 -0.018335 
2017-10-31 0.009245 
dtype: float64 

ファッションこのような新しいデータフレーム:

df = pd.DataFrame(aux.mul(rtrnM).sum(1).div(aux.sum(1)), columns=['mthly']) 
df 

       mthly 
2017-06-30 0.000922 
2017-07-31 0.027957 
2017-08-31 0.001306 
2017-09-29 -0.018335 
2017-10-31 0.009245 
+0

素晴らしいです。本当にありがとう。明確な合計(1)は1行あたりの合計を意味しますか? – steff

+0

@steff正しいです、それは最初の軸に沿った合計です。 –

関連する問題