删除超过 70% 零的列

hda*_*tas 3 python numpy dataframe pandas

我想知道是否有一个命令可以删除具有超过 70% 零或 X% 零的列。喜欢:

     df = df.loc[:, df.isnull().mean() < .7]
Run Code Online (Sandbox Code Playgroud)

对于 NaN。

谢谢 !

ayh*_*han 7

只需更改df.isnull().mean()(df==0).mean()

df = df.loc[:, (df==0).mean() < .7]
Run Code Online (Sandbox Code Playgroud)

这是一个演示:

df
Out: 
   0  1  2  3  4
0  1  1  1  1  0
1  1  0  0  0  1
2  0  1  1  0  0
3  1  0  0  1  0
4  1  1  1  1  1
5  1  0  0  0  0
6  0  1  0  0  0
7  0  1  1  0  0
8  1  0  0  1  0
9  0  0  0  1  0

(df==0).mean()
Out: 
0    0.4
1    0.5
2    0.6
3    0.5
4    0.8
dtype: float64

df.loc[:, (df==0).mean() < .7]
Out: 
   0  1  2  3
0  1  1  1  1
1  1  0  0  0
2  0  1  1  0
3  1  0  0  1
4  1  1  1  1
5  1  0  0  0
6  0  1  0  0
7  0  1  1  0
8  1  0  0  1
9  0  0  0  1
Run Code Online (Sandbox Code Playgroud)