Pandas如何计算每行指定列缺失值对应的ID列表
Pandas 实现每行指定列缺失对应ID列表计算
核心实现代码
import pandas as pd import numpy as np # 定义需要检查缺失的列,列顺序对应ID 0~4 check_cols = ['DIVISION', 'STORE_ID', 'FORECAST_DATE', 'START_TIME', 'FULFILLMENT_TYPE'] # 生成MISSING_ID列 df['MISSING_ID'] = df[check_cols].isna().apply( lambda row: [idx for idx, is_missing in enumerate(row) if is_missing] or np.nan, axis=1 )
逻辑说明
- 先按ID对应顺序定义要检查的列列表,后续调整检查列或ID对应关系只需修改该列表顺序即可,无需改动逻辑
- 用
isna()生成指定列的布尔缺失掩码,缺失位置为True - 逐行遍历掩码,收集所有值为True的位置索引(即对应缺失列的ID)
- 利用Python空列表布尔值为False的特性,无缺失时直接返回
np.nan,符合预期输出要求
优势对比
- 无需生成多余的辅助列,代码简洁易维护
- 比多分支
np.where写法扩展性更强,调整规则成本更低
内容的提问来源于stack exchange,提问作者Sayonti
相关产品推荐
相关产品推荐

