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

如何在Pandas中基于所有列生成含NaN标识的新列

解决方案:标记DataFrame中含任意NaN的行

你的核心问题是用错了判断方法——all(axis=1)是检查所有指定列全为NaN才返回True,但你需要的是任意一列存在NaN就标记,替换成any(axis=1)就能解决问题。

1. 检查所有列的情况

如果需要判断整行(所有列)是否存在NaN,直接用:

df['has_nans'] = df.isna().any(axis=1)

2. 检查指定范围列的情况

如果像你之前那样,只需要检查某几列(比如从第3列开始,对应iloc[:,2:]),代码调整为:

df['has_nans'] = df.iloc[:,2:].isna().any(axis=1)

补充:用lambda实现的写法(不推荐,效率更低)

如果一定要用lambda,写法如下,但优先推荐上面的内置方法(向量化操作比apply更高效):

df['has_nans'] = df.apply(lambda row: row.isna().any(), axis=1)

以你的示例DataFrame为例,运行上述代码后,has_nans列会正确标记出含NaN的行:

  • 第一行(Col-2为NaN)→ True
  • 第二行(无NaN)→ False
  • 第三行(Col-n为NaN)→ True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:20:31