Pandas保留姓名列仅展示其他列NAN缺失值的实现方法
Pandas 缺失值定位实现方案
效果匹配需求的实现代码
可以直接在你现有筛选逻辑的基础上做二次处理,以下代码输出效果和你给出的样例完全一致,非缺失值留空,仅保留NaN标识缺失项:
import pandas as pd # 1. 筛选出存在至少一个缺失值的行(保留你原有验证过的逻辑) df_missing = df[df.isnull().any(axis=1)].copy() # 2. 除Name列外,所有非缺失值替换为空字符串 cols_exclude_name = df_missing.columns.difference(['Name']) df_missing[cols_exclude_name] = df_missing[cols_exclude_name].where(df_missing[cols_exclude_name].isna(), '')
如果需要把非缺失值替换为Data exists,只需要把最后一行的''替换为"Data exists"即可。
字段较多场景的极简报告方案
如果数据源字段数量很多,直接展示所有列仍然会有大量空白,可以用以下代码直接生成每个人员对应的缺失字段列表:
# 新增列存储当前行的缺失字段名 df['missing_cols'] = df.apply( lambda row: [col for col in df.columns if col != 'Name' and pd.isna(row[col])], axis=1 ) # 过滤出存在缺失的行,仅保留姓名和缺失字段两列 simple_report = df[df['missing_cols'].map(len) > 0][['Name', 'missing_cols']]
输出效果示例:
Name missing_cols John Doe [Phone] Jenny Gump [Address] Larry Bean [Phone]
内容的提问来源于stack exchange,提问作者aero8991
相关产品推荐
相关产品推荐

