我有一个数据框
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 的方法来做到这一点而不是循环吗?
你可以尝试多列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
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)来提高速度,但对于三列或更多列,这是实现的方法!
| 归档时间: |
|
| 查看次数: |
3309 次 |
| 最近记录: |