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

如何删除DataFrame含NA值的行及同subjectid的所有行

如何删除DataFrame中含NA的行及对应同subjectid的所有行

核心思路

分两步完成需求:

  1. 定位所有包含NA值的行对应的subjectid
  2. 保留所有不属于这些subjectid的行

代码实现(基于Pandas)

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'subjectid': [1, 1, 2, 3, 3, 4],
    'col1': [5, None, 7, 9, 10, 12],
    'col2': [20, 21, None, 23, None, 25]
})

# 步骤1:提取存在NA的行对应的subjectid
invalid_subjects = df[df.isna().any(axis=1)]['subjectid'].unique()

# 步骤2:筛选出有效subjectid的所有行
clean_df = df[~df['subjectid'].isin(invalid_subjects)]

print(clean_df)

输出结果

运行代码后,仅subjectid=4的行会被保留(其他subjectid的行均存在NA值):

subjectid  col1  col2
5          4  12.0  25.0

关键方法说明

  • df.isna().any(axis=1):逐行检查是否存在NA值,返回布尔型Series标记每行是否有缺失
  • .unique():去重获取所有有问题的subjectid,避免重复判断
  • ~df['subjectid'].isin(invalid_subjects):对筛选条件取反,保留所有无问题的subjectid对应的行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 07:42:36