Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个数据帧相乘?_Python_Pandas_Dataframe - Fatal编程技术网

Python 两个数据帧相乘?

Python 两个数据帧相乘?,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧(A和B) 我如何执行乘法来获得 (0.1)*5, (0.5)* 6, and (0.7)*7? 换句话说,如何将B的第一行中的值与A的第一列中的值相乘,将B的第二行中的值与B的第二列中的值相乘,等等?您希望将它们的值相乘,而不考虑它们是行还是列 pd.Series(A.values.ravel() * B.values.ravel()) 0 0.5 1 3.0 2 4.9 dtype: float64 更新: In [161]: B Out[161]:

我有两个数据帧(A和B)

我如何执行乘法来获得

(0.1)*5,  (0.5)* 6,  and (0.7)*7?

换句话说,如何将B的第一行中的值与A的第一列中的值相乘,将B的第二行中的值与B的第二列中的值相乘,等等?

您希望将它们的值相乘,而不考虑它们是行还是列

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

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

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
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在这里帮了你很多忙。我建议你接受这个问题,并提出一个新的问题,你可以清楚地知道你想要什么。相信我,我们喜欢提问。我们只想让它们精确一点:-)非常感谢您的回复。所以事实上,如果A的数据帧有更多的列(col1,col2,col3,col4,col5),而B的列更少(col3,col4,col5),我可以用B中的col3,col4,col5替换A中的col3,col4,col5的值吗?“我怎么能做到呢?”俊强,这是一个新问题。社区将从你将其作为一个单独的问题发布中受益更多。此外,对你、社区和试图回答你的问题的人来说,你最好尽量具体地说明你的问题。