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

Python Pandas判断NaN执行列求和或取单列时返回数组问题排查

错误原因

  • 列表推导式中返回的是整列计算结果,而非当前遍历行的对应值:if分支的df[column_names].sum(axis=1)是整个数据集按行求和得到的完整Series,else分支的df['payment2']也是完整的payment2列Series
  • 遍历每一行的prev_product_id时,每次都返回长度和整个数据集一致的Series,最终得到的列表元素都是Series对象,而非逐行计算的单个数值,自然无法得到预期的单列结果

最优实现方案

推荐使用pandas向量化操作实现,性能远高于列表推导式:

import numpy as np
df['payment_corrected'] = np.where(
    df['prev_product_id'].isna(),
    df['payment1'] + df['payment2'],
    df['payment2']
)

列表推导式修正写法

如果坚持使用列表推导式,需要逐行取对应字段的值:

import math
df['payment_corrected'] = [
    row['payment1'] + row['payment2'] if math.isnan(float(row['prev_product_id'])) else row['payment2']
    for _, row in df.iterrows()
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:51:01