如何删除DataFrame含NA值的行及同subjectid的所有行
如何删除DataFrame中含NA的行及对应同subjectid的所有行
核心思路
分两步完成需求:
- 定位所有包含NA值的行对应的
subjectid - 保留所有不属于这些
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
相关产品推荐
相关产品推荐

