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

如何在Pandas中筛选所有数值列均超阈值的行并保留标识列?

Pandas筛选所有数值列均高于阈值的行
  • 核心思路:自动识别数值列,判断每行所有数值列是否都满足阈值条件,再筛选原表
  • 解决代码(通用版,适配任意数量列):
import pandas as pd

# 示例数据
data = {
    'City': ['A', 'B', 'C', 'D'],
    'Temp': [8, 12, 15, 11],
    'Humidity': [9, 13, 14, 10],
    'Pressure': [10, 11, 12, 9]
}
df = pd.DataFrame(data)

threshold = 10
# 1. 自动筛选所有数值类型列,生成行级布尔掩码(每行所有数值列是否都>=阈值)
mask = df.select_dtypes(include=['number']).ge(threshold).all(axis=1)
# 2. 用掩码筛选原DataFrame,保留标识列和符合条件的行
filtered_df = df[mask]
  • 关键说明:
    • select_dtypes(include=['number']):自动匹配所有int、float等数值列,无需手动指定列名或位置,适配109列的场景
    • .ge(threshold):等价于>= threshold,写法更简洁
    • .all(axis=1):按行判断所有数值列是否满足条件,这是你之前用.any(1)的核心区别——any是只要有一列满足就保留,all是必须所有列都满足才保留
    • 直接用df.iloc[:,1:] >=10得到的是布尔矩阵,直接筛选会保留原表结构但不符合条件的单元格显示NaN,而用all(axis=1)转成单行布尔值才能正确过滤整行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:09:23