Skip to main content
 首页 » 编程设计

python之Pandas 选择所有没有 NaN 的列

2025年05月04日13davidwang456

我有一个包含 200 列的 DF。他们中的大多数都与 NaN 相关。我想选择所有没有 NaN 或至少有最小 NaN 的列。我试图用阈值或 notnull() 删除所有但没有成功。任何想法。

df.dropna(thresh=2, inplace=True) 
df_notnull = df[df.notnull()] 

例如DF:

col1  col2 col3 
23     45  NaN 
54     39  NaN 
NaN    45  76 
87     32  NaN 

输出应该是这样的:

 df.dropna(axis=1, thresh=2) 
 
    col1  col2 
    23     45   
    54     39   
    NaN    45   
    87     32   

请您参考如下方法:

您可以使用非 NaN 列创建

df = df[df.columns[~df.isnull().all()]] 

或者

null_cols = df.columns[df.isnull().all()] 
df.drop(null_cols, axis = 1, inplace = True) 

如果您希望根据一定百分比的 NaN 删除列,则将数据超过 90% 的列设为 null

cols_to_delete = df.columns[df.isnull().sum()/len(df) > .90] 
df.drop(cols_to_delete, axis = 1, inplace = True)