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

DataFrame新增列时空单元格判断失效问题求助

问题解决方法

核心问题分析

  1. 空值判断语法错误:Pandas中空单元格存储的是NaN,不能用is empty这种错误语法判断,需用pd.isna()或pd.isnull()来检测空值。
  2. 判断顺序不合理:空值判断被放在数值比较逻辑之后,当Qty为空时,前面的数值比较会直接返回False,最终走到else分支返回Check。

修改后的代码

import pandas as pd

def F1(k):
    if k['Lev.'] == '.1':  # 修正原代码列名错误:DataFrame列是Lev.而非Lev
        return 'Expl1'
    elif k['Lev.'] == '.2':
        return 'Expl2'
    elif pd.isna(k['Qty']):  # 将空值判断提前,避免无效的数值比较
        return 'NoMap'
    elif k['Qta'] == k['Qty']:
        return 'OK'
    elif k['Qta'] > k['Qty']:
        return 'NOK'
    elif k['Qta'] < k['Qty']:
        return 'Less'
    else:
        return 'Check'

df['OK/NOK'] = df.apply(F1, axis=1)

额外说明

  • 如果你的空单元格实际是空白字符串(而非Pandas默认的NaN),可将空值判断改为k['Qty'] == ''。
  • 原代码中存在列名拼写错误:DataFrame的列是Lev.(带点),但函数里写的是k['Lev'],这会触发KeyError,已同步修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:36:21