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

如何基于指定列表筛选Pandas DataFrame中符合条件的行?

解决方案

可以通过构建阈值映射字典结合Pandas的矢量化操作实现,完全避免迭代,效率最优:

步骤1:将规则列表转换为阈值字典

把列表l中的每个字符串拆分为a的取值和对应的b阈值,转成字典方便快速映射:

threshold_dict = {int(s[0]): int(s[1]) for s in l}
# 生成的字典:{1:5, 2:4, 3:6, 4:5}

步骤2:生成筛选掩码

利用map方法为每行的a值匹配对应的阈值,再通过矢量化比较得到布尔掩码:

mask = df['b'] >= df['a'].map(threshold_dict)

步骤3:筛选DataFrame

用掩码过滤出符合条件的行:

filtered_df = df[mask]

完整代码

import pandas as pd

df = pd.DataFrame({"a": [1,1,1,2,2,2,3,3,3,4,4,4], "b": [4,5,6,4,5,6,4,5,6,4,5,6]})
l = ["15", "24", "36", "45"]

# 构建阈值字典
threshold_dict = {int(s[0]): int(s[1]) for s in l}
# 生成掩码并筛选数据
filtered_df = df[df['b'] >= df['a'].map(threshold_dict)]

print(filtered_df)

输出结果

a  b
1   1  5
2   1  6
3   2  4
4   2  5
5   2  6
8   3  6
10  4  5
11  4  6

这种方案全程采用Pandas矢量化操作,比循环迭代效率高得多,尤其适合处理大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:03:07