python - 按 Pandas 中值的百分位数过滤列

标签 python pandas

我想过滤掉 pandas 中具有“许多”零值的列。 过滤由“全零值”组成的列并不难,但我想要做的是过滤具有“多个零值”的列,例如超过 75% 的列值。

数据集(A 有 4 个值中的 3 个零,占列值的 75%。)

A B C
0 0 0
0 0 1
0 1 2
1 2 3

结果

B C
0 0
0 1 
1 2
2 3

有什么建议吗?

最佳答案

您可以使用 mean boolean mask ,其中True值转换为 1 ,然后反转条件 - >=<用于过滤具有较少 mean 的所有列如0.75 :

print ((df == 0).mean())
a    0.75
b    0.50
c    0.25
dtype: float64

print ((df == 0).mean() < 0.75)
a    False
b     True
c     True
dtype: bool

df = df.loc[:, (df == 0).mean() < 0.75]
print (df)
   b  c
0  0  1
1  0  1
2  1  0
3  1  1

关于python - 按 Pandas 中值的百分位数过滤列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388811/

相关文章:

Python if/elif 问题与 random.randint

python - Pandas - 创建一个带有 "dummy variable"的表

python - Pandas read_csv 列不正确

python-3.x - 使用日期值 reshape /透视数据

python - 嵌套字典到多索引数据帧,其中字典键是列标签

python - 如何降级openssl

python - 识别复数

python - 导出 anaconda 路径时没有名为 cv2 的模块

python - 用方程中的表达式拆分列

python - 对于很长的数据库,有没有办法知道 panda `to_csv` 的状态?