熊猫数据框的同一行但不同列的单元格的乘法总和

Rat*_*rit 6 python pandas

我有一个数据框

df = pd.DataFrame({'A':[1,2,3],'B':[2,3,4]})
Run Code Online (Sandbox Code Playgroud)

我的数据看起来像这样

Index   A   B
0       1   2
1       2   3
2       3   4
Run Code Online (Sandbox Code Playgroud)

我想计算每行中 A 和 B 之间的乘法总和。预期的结果应该是 (1x2)+(2x3)+(3x4) = 2 + 6 + 12 = 20。我可以知道 pythonic 的方法来做到这一点而不是循环吗?

jez*_*ael 5

你可以尝试多列AB再利用sum

import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[1,2,3],'B':[2,3,4]})
print df
   A  B
0  1  2
1  2  3
2  3  4

print df['A'] * df['B']
0     2
1     6
2    12
dtype: int64

print (df['A'] * df['B']).sum()
20
Run Code Online (Sandbox Code Playgroud)

prod用于多个所有列:

print df.prod(axis=1)
0     2
1     6
2    12
dtype: int64

print df.prod(axis=1).sum()
20
Run Code Online (Sandbox Code Playgroud)

感谢ajcr的评论:

如果您只有两列,您也可以使用df.A.dot(df.B)来提高速度,但对于三列或更多列,这是实现的方法!

  • 如果你只有*两*列,你也可以使用`df.A.dot(df.B)`来提高速度,但对于三列或更多列,这是这样做的方法! (2认同)