我有一个包含 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)
