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

如何获取pandas dropna操作删除的含NaN值的行数据

实现方法

核心思路:在执行weight列的空值删除操作前,提前筛选出会被删除的行单独存储,再执行原有删除逻辑,不会改变你原有代码的过滤结果。

你原有代码前两步执行完后,df_weight已经完成了age、height列的空值过滤,此时所有weight列为空的行,就是第三步dropna会删除的行,直接按这个逻辑提取即可:

# 原有前两步过滤逻辑保持不变
df_weight.dropna(subset = ["age"], inplace=True)
df_weight.dropna(subset = ["height"], inplace=True)

# 提前提取第三步要删除的行:weight列为NaN的记录
removed_weight_rows = df_weight[df_weight["weight"].isna()].copy()
# 执行原有第三步删除操作
df_weight.dropna(subset = ["weight"], inplace=True)

说明

  • 提取被删行时加.copy()是为了规避pandas的链式索引警告,后续你对removed_weight_rows做修改、存表等操作都不会触发异常
  • 最终removed_weight_rows就是你需要的、执行第三步删除时被移除的行组成的新表,可以直接导出或做后续分析

如果不想提前筛选,也可以通过索引差集的方式实现,效果完全一致:

# 前两步过滤不变
df_weight.dropna(subset = ["age"], inplace=True)
df_weight.dropna(subset = ["height"], inplace=True)

# 记录删除前的索引,执行非inplace的dropna后找差集
original_index = df_weight.index
df_weight = df_weight.dropna(subset = ["weight"])
removed_weight_rows = df_weight.loc[original_index.difference(df_weight.index)]

第一种写法逻辑更直观,不容易出索引匹配错误,优先推荐使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 17:47:37