Python pandas如何返回无缺失值列 dropna执行后仅显示索引列如何解决
pandas筛选无缺失值列解决方案
你当前代码中
dropna使用的how='all'参数仅会删除整列全为缺失值的列,和「筛选列内无任何缺失值」的需求不匹配,无法得到预期结果。
解决方法1:修改dropna参数
将how参数调整为any,只要列内存在任意一个缺失值就删除该列,最终保留的就是完全无缺失值的列:
import pandas as pd df = pd.util.testing.makeMissingDataframe().reset_index() df = df.dropna(axis='columns', how='any') df.head()
解决方法2:布尔索引筛选
逻辑更直观清晰,可读性更高:
import pandas as pd df = pd.util.testing.makeMissingDataframe().reset_index() # df.notna().all() 会逐列判断是否所有值都非缺失,返回布尔序列 df = df.loc[:, df.notna().all()] df.head()
测试结果说明
你用到的pd.util.testing.makeMissingDataframe()是pandas官方的测试数据生成方法,默认生成的所有数值列都会包含至少1个缺失值,因此测试时运行上述代码后只会剩下reset_index()生成的索引列,属于测试数据的特性,替换为你的真实业务数据即可正常筛选。
内容的提问来源于stack exchange,提问作者arfan rifqi
相关产品推荐
相关产品推荐

