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

如何删除DataFrame中id对应所有行特征全为nan的样本?

实现方案

核心逻辑是按id分组后过滤掉特征列全为nan的分组,直接用pandas原生方法就能实现,不需要手动构建字典遍历:

import pandas as pd
import numpy as np

# 核心过滤代码,直接作用于你的dtf即可
dtf_new = dtf.groupby('id').filter(
    # 仅保留组内存在至少一个非空特征值的id分组
    lambda x: ~x.drop('id', axis=1).isna().all(axis=None)
).reset_index(drop=True)

逻辑说明

  • 首先通过groupby('id')将所有数据按id字段拆分为独立分组
  • 对每个分组去掉id列后,用isna().all(axis=None)判断该分组所有特征值是否全部为空
  • 用~取反,只保留不全为空的分组
  • 最后重置索引,避免原索引残留导致后续处理出错

如果你的数据中空值是用空字符串、NULL等其他占位符表示的,可以先统一转换为nan再执行过滤:

dtf = dtf.replace(['', 'NULL'], np.nan)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:00:01