如何为pandas DataFrame应用条件规则以获取指定数据集?
Pandas DataFrame 条件筛选问题解决方案
原代码核心问题
- 匹配逻辑错误:循环过程中只要检测到某一行
Price小于150,就直接打印全表的ItemNo、ItemName列,而非仅输出当前符合条件的对应行,最终结果会重复刷出大量冗余的全表内容,完全无法得到精准筛选的目标数据。 - 运算效率极低:pandas本身支持向量化批量运算,原生for循环逐行遍历的写法,在数据量较大时,运行效率会比标准写法低几个数量级。
标准实现方法
pandas条件筛选的标准操作是通过布尔索引完成,无需逐行遍历:
- 构造布尔掩码序列,逐行标记是否满足
Price < 150的判断条件 - 基于掩码索引匹配对应行,同时指定需要输出的列范围
- 增加空结果判断,当无任何匹配条目时输出"Error"
可直接使用的示例代码:
# 生成逐行判断的布尔掩码 price_filter = stock["Price"] < 150 # 提取符合条件的行,选取需要展示的ItemNo、ItemName列 match_data = stock.loc[price_filter, ["ItemNo", "ItemName"]] # 判断匹配结果是否为空 if match_data.empty: print("Error") else: print(match_data)
方案效果
- 结果精准:仅输出满足价格阈值的对应条目,不会出现冗余的全表重复输出问题
- 性能优异:所有筛选运算由pandas底层向量化逻辑处理,运行速度远高于逐行循环的写法
内容的提问来源于stack exchange,提问作者Daniel Simon George
相关产品推荐
相关产品推荐

