乘法使用Python熊猫数据框
问题描述:
这可能是一个愚蠢的问题,但我想乘以2个数据框,一个是100x2形状(100行和2列),另一个是2x1形状。所述第一数据帧的(仅打印头,并具有100行和2列,即X0和X1): -乘法使用Python熊猫数据框
X0 X1
0 1 6.1101
1 1 5.5277
2 1 8.5186
3 1 7.0032
4 1 5.8598
其它数据帧是一个参数矢量&我称之为西塔2列0,和1.
Theta=pd.DataFrame(np.zeros((1, 2)))
print("printing initialized Theta:\n",Theta)
输出是=
0 1
0 0.0 0.0
,你可以看到它是尺寸1×2的。现在,我借此西塔数据帧的转置,并且变得:
theta1=theta.transpose()
print("printing theta transponse:\n",theta1)
结果是: -
0
0 0.0
1 0.0
然而,当我使用乘以该第一数据帧X具有Theta1:
predict=X.mul(theta1,axis=1)
我得到的输出(仅打印头):
X0 X1 0
0 0.0 0.0 0.0
1 0.0 0.0 0.0
2 0.0 0.0 0.0
3 0.0 0.0 0.0
4 0.0 0.0 0.0
(100, 3)
正如你所看到的,它现在已经变成了一个100x3的数据框,当我预计它是一个100x1。 看起来像数据帧毕竟不能基于矩阵乘法相乘。我该怎么做才对?我应该将其转换为numpy.matrix,然后进行矩阵乘法?
答
两点故障。
- 要使用
dot
不mul
-
Theta
的指数不与X
对齐。因此,您需要对齐Theta
的列名以匹配X
的列名。
试试这个
Theta.columns = X.columns
X.dot(Theta.T)
0
0 0.0
1 0.0
2 0.0
3 0.0
4 0.0
.dor对齐ü不需要.values(其实你很少需要它);这不是惯用的 – Jeff
和你的最后一部分是惯用的方式(或更好地构造Theta那样);使用.values根本就不是惯用的,应该几乎不会被使用 – Jeff
@Jeff明白了。我会相应地调整答案。 – piRSquared