我正在尝试计算数据框和系列的点积,但我得到了ValueError: matrices are not aligned
,我真的不明白为什么。我明白了
if (len(common) > len(self.columns) or len(common) > len(other.index)):
raise ValueError('matrices are not aligned')
带有错误消息,我完全理解。但是当我检查我的系列时,它有 25 个值:
weights
Out[193]:
0 0.000002
1 0.000577
2 0.002480
3 0.004720
4 0.003640
5 0.001480
6 0.000054
7 0.000022
8 0.009060
9 0.000511
10 0.034900
11 0.140000
12 0.065600
13 0.325000
14 0.072900
15 0.031100
16 0.209000
17 0.003280
18 0.001390
19 0.002100
20 0.000847
21 0.009560
22 0.006320
23 0.014000
24 0.061900
Name: 3, dtype: float64
当我检查我的数据框时,它也有 25 列:
In [195]: data
Out[195]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 131 entries, 0 to 130
Data columns (total 25 columns):
(ETC)
所以我明白为什么我会收到错误消息。我在这里想念什么?
一些附加信息:我正在使用weightedave=data.dot(weights)
并且我刚刚在点代码中发现它确实common = data.columns.union(weights.index)
可以获取common
错误消息中的引用。所以我测试了它,但在我的情况下,它变成了
In[220]: common
Out[220]: Index([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, u'100_AVET', u'101_AVET', u'102_AVET', u'13_AVET', u'14_AVET', u'15_AVET', u'18_AVET', u'19_AVET', u'20_AVET', u'22_AVET', u'36_AVET', u'62_AVET', u'74_AVET', u'78_AVET', u'79_AVET', u'80_AVET', u'83_AVET', u'85_AVET', u'86_AVET', u'88_AVET', u'94_AVET', u'95_AVET', u'96_AVET', u'97_AVET', u'99_AVET'], dtype=object)
这确实比我的列/索引数(25)长(50)。我应该重命名我的系列还是数据框中的列?