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

如何用Pandas筛选90%以上列值小于指定阈值的行?

实现90%以上列满足条件的行筛选

嘿,这问题很好解决!你已经知道用all(axis=1)来筛选所有列满足条件的行,现在要改成90%以上列满足,核心思路是统计每行满足条件的列数占总列数的比例,再和0.9比较就行。

具体步骤&代码示例

先回顾你的示例数据:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(5, 15, (10, 11)), columns=list('abcdefghijk'))

假设你要筛选90%以上列的数值小于指定阈值(比如阈值设为10),可以这么写:

# 指定你的阈值
threshold = 10

# 1. 计算每行中数值小于阈值的列数占总列数的比例
# 2. 判断比例是否大于0.9(即90%以上)
condition = (df < threshold).sum(axis=1) / df.shape[1] > 0.9

# 应用条件筛选行
filtered_df = df[condition]

代码解释

  • df < threshold:生成一个布尔型DataFrame,每个位置表示对应单元格是否小于阈值;
  • .sum(axis=1):按行求和(True会被视为1,False视为0),得到每行满足条件的列数;
  • / df.shape[1]:除以总列数,得到每行满足条件的列数占比;
  • > 0.9:判断该占比是否超过90%,得到一个布尔Series,用来筛选符合条件的行。

小补充

如果你需要的是**至少90%(包含90%)**的列满足条件,只需把> 0.9改成>= 0.9即可~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:16:14