python - 删除超过 70% 零的列

标签 python pandas numpy dataframe

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

     df = df.loc[:, df.isnull().mean() < .7]

对于 NaN。

谢谢!

最佳答案

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

df = df.loc[:, (df==0).mean() < .7]

这是一个演示:

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

关于python - 删除超过 70% 零的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44250642/

相关文章:

python - py2neo - neo4j.GraphDatabaseService(db_string) 使 python 崩溃;没有错误日志

python - Pandas.Series.dtype.kind 对于 pd.interval 来说是 None

python - 将十进制范围转换为 Numpy 数组,每一位都是一个数组元素

Python 中值滤波器应用于 3D 数组以产生 2D 结果

python - 如何从字典键/值创建对象属性?

python - geodjango + PostGIS = GPL?

python - pandas 将函数列表应用于数据框

python - 计算两个日期之间的差异时如何删除 "days"?

python - numpy 的 bincount 函数的反函数

python - 如何使用数据框中的特定行和列在 Panda Python 中创建直方图