You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含NaN值的两个DataFrame实现按行SUMPRODUCT运算的高效方案

问题原因

你现有代码返回NaN的核心原因是:NumPy中NaN与任意数值运算结果仍为NaN,求和时不会自动忽略这类异常值。

可行实现方案

两种高效的矢量化实现方式,均满足NaN按0处理的要求,性能远高于循环遍历:

方法1:Pandas原生fillna处理(推荐,可读性最高)

直接用fillna(0)先把两个DataFrame里的空值替换为0,再做乘积累加:

df['z'] = (df['x'].fillna(0) * df['y'].fillna(0)).sum(axis=1)

针对你的示例数据计算结果如下:

  • 第一行:2*2 +5*3 +9*4 = 55
  • 第二行:0*2 +4*2 +7*3 = 29
  • 第三行:3*1 +0*2 +3*3 = 12

方法2:NumPy nan_to_num处理(大内存数据下性能略优)

如果数据量极大(百万行以上),用NumPy的nan_to_num直接在数组层面替换空值,内存开销更低:

import numpy as np
df['z'] = (np.nan_to_num(df['x']) * np.nan_to_num(df['y'])).sum(axis=1)

内容的提问来源于stack exchange,提问作者JoshZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:21:01