我有两个数据框(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的第二行值与A的第二列值相乘,以此类推?
您想要将它们的值相乘,而不考虑它们是行还是列。
pd.Series(A.values.ravel() * B.values.ravel())
0 0.5
1 3.0
2 4.9
dtype: float64
更新:
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
更新2:
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
旧回答:
和@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