我有两个数据框(A和B)
A:
column 1, column 2, column 3
0.1 0.5 0.7
B:
row 1 5
row 2 6
row 3 7
如何执行乘法以获得
(0.1)*5, (0.5)* 6, and (0.7)*7?
换句话说,如何将B的第一行中的值与A的第一列中的值相乘,B的第二行中的值与B的第二列中的值相等,等等?
答案 0 :(得分:4)
您希望将它们的值相乘,而不管它们是行还是列。
pd.Series(A.values.ravel() * B.values.ravel())
0 0.5
1 3.0
2 4.9
dtype: float64
答案 1 :(得分:3)
<强>更新强>
In [161]: B
Out[161]:
col3 col4 col5
0 5 6 7
In [162]: A
Out[162]:
col1 col2 col3 col4 col5
0 0.1 0.2 0.3 0.4 0.5
In [163]: A[B.columns]
Out[163]:
col3 col4 col5
0 0.3 0.4 0.5
In [164]: A[B.columns].mul(B.values.ravel())
Out[164]:
col3 col4 col5
0 1.5 2.4 3.5
<强> UPDATE2:强>
In [169]: A.loc[:, B.columns] = A[B.columns].mul(B.values.ravel())
In [170]: A
Out[170]:
col1 col2 col3 col4 col5
0 0.1 0.2 1.5 2.4 3.5
OLD回答:
与@ piRSquared的解决方案相比并不是那么好,但它应该有效:
In [116]: A.T.mul(B.values).T
Out[116]:
column 1 column 2 column 3
0 0.5 3.0 4.9
或更好:
In [123]: A.mul(B.values.ravel())
Out[123]:
column 1 column 2 column 3
0 0.5 3.0 4.9