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

从已有DataFrame按双条件提取新表及NaN值提取报错解决

问题解决方法

一、提取Cardhldr为0或1的行(修复TypeError)

代码报错是因为运算符优先级问题:|(按位或)的优先级高于==,Python会先执行1 | dt['Cardhldr'],导致整数与DataFrame列的类型不兼容运算。

有两种修复方式:

  • 给每个条件单独加括号,明确运算顺序:
    dt_train = dt.loc[(dt['Cardhldr'] == 1) | (dt['Cardhldr'] == 0)]
    
  • 更简洁的方式用isin()方法,适配多值匹配场景:
    dt_train = dt.loc[dt['Cardhldr'].isin([0, 1])]
    

二、提取Cardhldr为NaN的行(修复name 'NaN' is not defined)

Python中NaN不是内置关键字,直接调用会报错;且NaN不能用==判断(NaN与任何值比较结果都是False),必须用专门的空值检测方法。

正确写法有两种:

  • 使用pandas的isna()函数:
    import pandas as pd
    dt_test = dt.loc[pd.isna(dt['Cardhldr'])]
    
  • 直接调用Series的isna()方法:
    dt_test = dt.loc[dt['Cardhldr'].isna()]
    

若要使用NaN字面量,需导入numpy后用np.nan,但仍推荐上述空值检测方法,可靠性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:42:08