Python 矩阵未对齐错误消息

Python 矩阵未对齐错误消息,python,pandas,matrix,np,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

我有以下返回数据帧

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

我不知道为什么会出现这个错误,但如果能找到加权回报的替代方案,我会非常高兴的

检查你称之为点积的矩阵的形状。矩阵
A的点积。只有当A的第二轴与B的第一轴大小相同时,才能计算点(B)

在您的示例中,还有一列带有日期,这会破坏您的计算。你应该在计算中去掉它。试着运行
port_ret=ret[:,1::].dot(df3[1:])
并检查它是否产生您想要的结果。

对于以后的情况,请使用
numpy.shape()
函数调试矩阵计算,这是一个非常有用的工具。

权重矩阵中有两列:

df3.shape
Out[38]: (4, 2)
将该矩阵上的索引设置为
符号
,以获得正确的

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

当我运行port_ret=ret[:,1:].dot(df3[1:])时,我得到TypeError:unhabable type:“slice”shape(ret)和
shape(df3)
返回什么?起初我认为这些是numpy阵列,但现在我看到的是pandasIn[15]np.shape(df3)Out[15]:(4,2)In[17]np.shape(ret)Out[17]:(4,4)显然它们大小不同,有没有一种“熊猫”方法可以实现相同的目标?