Pandas两个数据框相乘?

3

我有两个数据框(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的第二列值相乘,以此类推?

2个回答

4

您想要将它们的值相乘,而不考虑它们是行还是列。

pd.Series(A.values.ravel() * B.values.ravel())

0    0.5
1    3.0
2    4.9
dtype: float64

非常感谢您的回复。 - JungleDiff
那么实际上,如果A的数据框具有更多列(col1、col2、col3、col4、col5),而B具有较少的列(col3、col4、col5),我能否用B中col3、col4、col5的值替换A中的值?我该如何做到这一点? - JungleDiff
2
@JunJang,这是一个新问题。如果您将其作为单独的问题发布,社区将从中受益更多。此外,对于您、社区和试图回答您问题的人来说,最好尽量具体地描述您的问题。 - piRSquared

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

更新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

超棒的现在! - piRSquared
@JunJang,你能提供可复现的数据集吗? - MaxU - stand with Ukraine
假设你有数据框 A: col1 col2 col3 col4 col5 0.1 0.2 0.3 0.4 0.5你还有数据框 B: col3 col4 col5 5 6 7如何将 A 的 col3、col4 和 col5 与 B 进行匹配,以便得到: col1 col2 col3 col4 col5 0.1 0.2 5 6 7 - JungleDiff
1
@JunJang,我在我的答案中留了一条类似的消息,但你正在偏离你最初的问题。请考虑是否已经回答了那个问题,并选择对你最有帮助的答案。MaxU在这里为你提供了很多帮助。我建议你接受这个答案,并提出一个新问题,在那里你可以清楚地表达你想要的。相信我,我们喜欢问题。我们只是希望它们能够精确明确 :-) - piRSquared
@piRSquared,是的,你说得对。修改问题可能会使已经给出的答案失效... - MaxU - stand with Ukraine
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接