删除NaN值百分比较高的Pandas列

2024-03-29 11:42:39 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下数据。在

df = pd.DataFrame({'group':list('aaaabbbb'),
                   'val':[1,3,3,np.NaN,5,6,6,2],
                   'id':[1,np.NaN,np.NaN,np.NaN,np.NaN,3,np.NaN,3]})
df    

我想删除NaN值百分比超过50%的列。我可以手动执行以下操作,然后使用drop。在

^{pr2}$

但是,我想知道是否有一个优雅而快速的代码来实现这一点?在


Tags: 数据iddataframedfnpgroupval手动
3条回答

无法使用dropna的thresh参数。在

df.dropna(axis=1, thresh=int(0.5*len(df)))
df.dropna(thresh=len(df)//2,axis=1)
Out[57]: 
  group  val
0     a  1.0
1     a  3.0
2     a  3.0
3     a  NaN
4     b  5.0
5     b  6.0
6     b  6.0
7     b  2.0

使用mean^{}删除列:

print (df.isnull().mean() * 100)
group     0.0
id       62.5
val      12.5
dtype: float64

^{pr2}$

相关问题 更多 >