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

为何使用notnull()过滤DataFrame中的NaN值无效?

问题原因及解决方案
  • 核心问题:你用的cMean[cMean.notnull()]逻辑根本不是删除NaN值。当你用布尔DataFrame对原DataFrame做索引时,pandas会完整保留原数据的行和列结构,只是把布尔值为False的位置(对应原NaN的位置)继续留空,甚至会把原本非NaN但对应布尔值为False的位置也设为NaN——这自然达不到你想要的删除效果。
  • 为什么cMean.notnull()看起来正常?因为它确实正确生成了每个元素是否非空的布尔矩阵,但你用布尔矩阵索引DataFrame的方式用错了。
  • 正确删除NaN的方式:
    • 删除所有包含NaN的行:cMean.dropna(axis=0)
    • 删除所有包含NaN的列:cMean.dropna(axis=1)
    • 只删除整行全是NaN的行:cMean.dropna(axis=0, how='all')
    • 只保留指定列无NaN的行:cMean.dropna(subset=['目标列名1', '目标列名2'])

内容的提问来源于stack exchange,提问作者principal-ideal-domain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:55:30