为什么执行Pandas数据筛选后得到空的DataFrame?
Pandas筛选指定学历数据返回空DataFrame问题排查方案
问题描述
我需要筛选出"Degree status" == "HS-grad"(即高中毕业)的相关数据,编写的代码如下:
HS_grad = census_data2[census_data2["Degree Status"]=="HS-grad"] print(HS_grad)
运行后输出为空DataFrame,提示信息如下:
Empty DataFrame Columns: [Employment Type, Degree Status, Marriage-Status, Job-Role, Family-Role, Ethnicity, Gender, Country, Earnings] Index: []
我已提前对该数据集的表头完成重命名操作。
排查及解决方法
- 排查列名匹配问题
pandas对列名的匹配严格区分大小写、空格,你最初需求里写的列名是Degree status(status首字母小写),但代码里用的是Degree Status(Status首字母大写),先确认重命名后的列名和代码中引用的列名完全一致。 - 排查字段值隐藏字符问题
数据集的字段值很可能存在前后空格、不可见特殊字符,导致精确匹配失败,可先打印该列所有唯一值确认实际取值格式:
若确认存在多余空格,可先对该列做清洗后再筛选:print(census_data2["Degree Status"].unique())# 去除字段值前后的空格、换行符等空白字符 census_data2["Degree Status"] = census_data2["Degree Status"].str.strip() # 重新筛选 HS_grad = census_data2[census_data2["Degree Status"] == "HS-grad"] print(HS_grad) - 排查字段数据类型问题
若上述操作仍无结果,可确认该列的数据类型是否为字符串:
若不是字符串类型,可先做类型转换后再执行筛选操作。print(census_data2["Degree Status"].dtype)
内容的提问来源于stack exchange,提问作者farhus
相关产品推荐
相关产品推荐

