矩阵未对齐错误消息

时间:2016-09-05 01:36:32

标签: python pandas matrix np

我有以下返回数据框

ret
Out[3]: 
Symbol            FX      OGDC       PIB       WTI
Date                                              
2010-03-02  0.000443  0.006928  0.000000  0.012375
2010-03-03 -0.000690 -0.007873  0.000171  0.014824
2010-03-04 -0.001354  0.001545  0.000007 -0.008195
2010-03-05 -0.001578  0.008796 -0.000164  0.015955

每个符号的以下权重:

df3
Out[4]: 
  Symbol    Weight
0   OGDC  0.182022
1    WTI  0.534814
2     FX  0.131243
3    PIB  0.151921

我试图获得每天的加权回报并尝试:

port_ret = ret.dot(df3)

但是我收到以下错误消息:

ValueError: matrices are not aligned

我的目标是为每个日期加权回报,例如2010-03-02将如下:

weighted_ret = 0.000443*.131243+.006928*.182022+0.000*0.151921+0.012375*.534814 = 0.007937512

我不确定为什么会收到此错误,但对于加权回报的替代解决方案会非常高兴

2 个答案:

答案 0 :(得分:3)

您的权重矩阵中有两列:

df3.shape
Out[38]: (4, 2)

在该矩阵上将索引设置为Symbol以获得正确的dot

ret.dot(df3.set_index('Symbol'))
Out[39]:
              Weight
Date
2010-03-02  0.007938
2010-03-03  0.006430
2010-03-04 -0.004278
2010-03-05  0.009902

答案 1 :(得分:0)

检查您正在调用点积的矩阵的形状。仅当A的第二轴与B的第一轴的尺寸相同时,才能计算矩阵A.dot(B)的点积。
在您的示例中,您有额外的日期列,这会破坏您的计算。你应该在你的计算中摆脱它。尝试运行port_ret = ret[:,1:].dot(df3[1:])并检查它是否产生您想要的结果 对于将来的情况,使用numpy.shape()函数来调试矩阵计算,这是非常有用的工具。