You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中删除空值占比超过60%的列?

解决方法:删除空值占比超60%的列

没问题,我来帮你搞定这个需求!咱们一步一步来处理:

步骤1:统一标记所有空值

你的DataFrame里存在'NULL'、纯空格这类自定义空值,首先得把它们转换成Pandas能识别的NaN,这样才能准确计算空值占比:

import pandas as pd
import numpy as np

# 初始化你的DataFrame
data = {
    'c1': ['Test1','Test2','NULL','Test3',' ','Test4','Test4','Test1',"Test3"],
    'c2': [' ','Test1',' ','NULL',' ','NULL','NULL','NULL','NULL'],
    'c3': [0,0,0,0,0,1,5,0,0],
    'c4': ['NULL', 'Test2', 'Test1','Test1', 'Test2', 'Test2','Test1','Test1','Test2']
}
df = pd.DataFrame(data)

# 先处理字符串列的全空格情况,再替换'NULL'为标准NaN
df = df.apply(lambda col: col.str.strip().replace('', np.nan) if col.dtype == 'object' else col)
df.replace('NULL', np.nan, inplace=True)

这一步的作用是把所有“空值”统一成Pandas标准的NaN,避免漏统计那些自定义的空标记。

步骤2:计算每列的空值占比

接下来计算每列中空值的比例,用isna()判断空值,mean()直接得到占比(因为True=1,False=0,均值就是空值在列中的占比):

# 计算每列的空值占比
null_ratio = df.isna().mean()

运行后你会得到类似这样的结果:

c1    0.222222
c2    0.777778
c3    0.000000
c4    0.111111
dtype: float64

步骤3:筛选保留符合条件的列

最后只保留空值占比≤60%(也就是0.6)的列:

# 筛选出空值占比不超过60%的列
filtered_df = df.loc[:, null_ratio <= 0.6]

最终filtered_df就会去掉空值占比超60%的c2列,保留c1、c3、c4三列。

内容的提问来源于stack exchange,提问作者Krypt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:49:25