熊猫两个数据帧的乘法?

时间:2017-04-14 12:24:14

标签: python pandas dataframe

我有两个数据框(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的第二列中的值相等,等等?

2 个答案:

答案 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