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

pandas检查DataFrame行是否包含NaN时for循环判断结果错误如何解决

问题核心原因

np.nan的比较规则特殊,它和任何值做==判断都会返回False,包括和它自身比较,所以你写的df.iloc[i, 2] == np.nan永远无法触发条件分支,导致输出全是False。

修复方案

1. 测试代码修复

把判断NaN的逻辑换成pd.isna()或者np.isnan()即可,修改后代码如下:

for i in range(5): 
    if pd.isna(df.iloc[i, 2]): 
        result = np.nan
    else: 
        result = 'False'
    # 按你的预期输出带年份的结果
    print(df.index[i], result)

2. 最终需求的高效实现

你要实现的「第2列值为NaN时,将第0列和第1列数值相加」的需求,不需要写for循环,用pandas向量化操作效率更高、代码更简洁:

# 新列存储计算结果,也可以根据需求直接替换原有列
df['calc_result'] = np.where(pd.isna(df[2]), df[0] + df[1], df[2])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:45:02