我有一个数据框
df = pd.DataFrame({'A':[1,2,3],'B':[2,3,4]})
我的数据看起来像这样
Index A B
0 1 2
1 2 3
2 3 4
我想计算每行A和B之间的乘法和。 预期结果应为(1x2)+(2x3)+(3x4)= 2 + 6 + 12 = 20。 我可以知道这样做的pythonic方法而不是循环吗?
答案 0 :(得分:3)
您可以尝试多个列A
和B
,然后使用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
或者对所有列使用prod
:
print df.prod(axis=1)
0 2
1 6
2 12
dtype: int64
print df.prod(axis=1).sum()
20
感谢您ajcr发表评论:
如果你只有两列,你也可以使用 df.A.dot(df.B)来提高速度,但是对于三列或更多列,这就是这样做的方法!