使用numpy乘以两个DF,计算每行的平均值

时间:2017-10-24 02:26:24

标签: python pandas numpy dataframe average

df:aux包含布尔值,rtrnM包含月度返回值。我期待(分段)乘以aux和rtrnM得到一个带有月返回的df,其中aux为TRUE,然后我想计算每行结果值的算术平均值。 这就是aux和rtrnM的样子:

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 个答案:

答案 0 :(得分:1)

是的, var editButton = $('<button />').text('edit') var deleteButton = $('<button />').text('delete') $("#click").click(function(){ var entry = $(".enter").val() $("ul").append("<li><span>" + entry + "</span></li>") $(editButton).appendTo('ul li:last-child').addClass('edit'); $(deleteButton).appendTo('ul li:last-child').addClass('delete'); }); 在这里给出了所有值的平均值,包括0-vals。

修复很简单。调用mean并除以非零值的数量。

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