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

如何通过字典过滤Pandas DataFrame,保留列中≥阈值的元素?

问题描述

假设有如下Pandas DataFrame:

Num1  Num2
1        1     0
2        3     2
3        5     4
4        7     6
5        9     8

同时有如下字典:

d = {
    "Num1": 2,
    "Num2": 5
}

需求是:对DataFrame中与字典键匹配的列,保留值大于等于字典对应阈值的元素,不符合条件的替换为nan,最终得到如下结果:

Num1  Num2
1       NaN   NaN
2       3.0   NaN
3       5.0   NaN
4       7.0   6.0
5       9.0   8.0
解决方案

可以利用Pandas的ge()和where()方法快速实现需求,代码如下:

import pandas as pd

# 构造原始数据
df = pd.DataFrame({
    'Num1': [1, 3, 5, 7, 9],
    'Num2': [0, 2, 4, 6, 8]
}, index=[1,2,3,4,5])

d = {"Num1": 2, "Num2": 5}

# 核心逻辑
result = df.where(df.ge(d))
print(result)

代码说明

  • df.ge(d):按列匹配字典的键,将每列的元素与对应阈值做大于等于比较,生成一个布尔值DataFrame(满足条件为True,否则为False)。
  • df.where(...):根据布尔掩码筛选数据,保留原DataFrame中True位置的值,False位置替换为nan。

运行代码后即可得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:42:15