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

Python3升级后如何移除Pandas DataFrame中的全部NaN值

Pandas 2.x 移除全NaN行和列的解决方案

最简洁直观的实现

直接使用dropna()方法分两步处理,先移除全NaN的行,再移除全NaN的列,完全匹配你的需求:

# 先删除所有值均为NaN的行,再删除所有值均为NaN的列
new_df = df.dropna(how='all').dropna(how='all', axis=1)

旧代码报错的原因与修复

你之前用的df.any(1)在新版Pandas中报错,是因为方法参数的位置规则发生了变化。如果仍想基于any()实现,需改用关键字参数指定轴方向:

# 先过滤掉全NaN的行
filtered_rows = df[df.any(axis=1)]
# 再过滤掉全NaN的列
new_df = filtered_rows.loc[:, filtered_rows.any(axis=0)]

不过相比之下,dropna()的写法更清晰,更贴合Pandas的设计逻辑。

更灵活的掩码筛选方案

如果需要单独控制行或列的筛选逻辑,可以通过生成掩码的方式实现:

# 生成非全NaN行的掩码
keep_rows = df.notna().any(axis=1)
# 生成非全NaN列的掩码
keep_cols = df.notna().any(axis=0)
# 筛选出目标数据
new_df = df.loc[keep_rows, keep_cols]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:26:21