Python实现两列SUMPRODUCT运算的示例代码咨询
SUMPRODUCT运算Python实现(损失裁剪场景)
你当前编写的代码存在两处核心错误:
[int(x) for x in 'Column2']是遍历Column2这个字符串的每个字符做转换,而非读取clipping_daily中对应列的数值- pandas中两列逐元素相乘后直接调用
sum()即可得到SUMPRODUCT结果,不需要指定axis=1参数
1. Pandas DataFrame场景(你当前的使用场景)
import pandas as pd # 先确保Column2列是数值类型,避免类型报错(如果原列已经是整数可跳过这行) clipping_daily['Column2'] = pd.to_numeric(clipping_daily['Column2'], errors='coerce') # 实现两列的SUMPRODUCT运算 clipping = (clipping_daily['Column1'] * clipping_daily['Column2']).sum()
2. 普通Python列表场景
如果你的数据是原生列表结构,没有使用pandas,可以选择两种实现方式:
column1 = [1, 2, 3, 4] column2 = [5, 6, 7, 8] # 方法1:生成式实现,小数据量使用 sumproduct = sum(a * b for a, b in zip(column1, column2)) # 方法2:numpy实现,大数据量下运算效率更高 import numpy as np sumproduct = np.sum(np.array(column1) * np.array(column2))
注意事项
- 损失裁剪场景下如果需要跳过空值/异常值,可在求和时添加
skipna=True参数:(clipping_daily['Column1'] * clipping_daily['Column2']).sum(skipna=True) - 如果两列长度不一致,pandas和numpy运算时会自动补NaN,最终求和结果也会返回NaN,需要提前做数据对齐处理
内容的提问来源于stack exchange,提问作者Chio
相关产品推荐
相关产品推荐

