如何在Pandas DataFrame中筛选空白行并保留字符串"NA"值?
解决Pandas中字符串"NA"被误判为缺失值的问题
有两种可行的解决方案,根据你的数据阶段选择:
方案1:导入时直接规避误判
如果是从FTP读取CSV类文件,可通过read_csv的参数指定合法缺失值范围,把字符串"NA"排除在外:
import pandas as pd # 仅将空字符串、"NaN"识别为缺失值,保留合法的"NA" df = pd.read_csv( "你的FTP文件路径", keep_default_na=False, na_values=["", "NaN"] ) # 现在直接用isna()筛选所有含空白的行即可 missing_rows = df[df.isna().any(axis=1)]
方案2:已导入数据后的修正处理
如果已经完成数据导入,不想重新读取,可单独对"management population"列做特殊判断,再合并其他列的缺失情况:
import pandas as pd target_col = "management population" # 其他列的缺失判断:任意列存在缺失值即标记 mask_other = df.drop(columns=[target_col]).isna().any(axis=1) # 目标列的缺失判断:仅识别真正的空白(np.nan/空字符串/纯空格),排除"NA" mask_target = (df[target_col].isna()) | (df[target_col].str.strip() == "") # 合并掩码:只要行内有任意一列需要补全就选中 final_mask = mask_other | mask_target # 得到需要返回给行政团队补全的行 missing_rows = df[final_mask]
补充说明
- 方案1更高效,从源头避免误判,适合还未完成数据导入的场景
- 方案2适合已完成导入、需要快速修正筛选逻辑的场景
- 如果需要处理的空白还包含其他形式(比如"NULL"),可在
na_values或mask_target中补充对应判断条件
内容的提问来源于stack exchange,提问作者Jon.Moon
相关产品推荐
相关产品推荐

