当前位置:首页>python>Python:Pandas 多条件自定义筛选query语法 复杂逻辑轻量化写法

Python:Pandas 多条件自定义筛选query语法 复杂逻辑轻量化写法

  • 2026-09-29 21:51:14
Python:Pandas 多条件自定义筛选query语法 复杂逻辑轻量化写法
多条件叠加筛选时,传统布尔索引代码冗长、可读性差,df.query()支持类SQL字符串表达式,简化复杂多维度筛选逻辑,大幅精简代码。
场景:筛选数码品类、售价1000~5000、库存大于50的可售商品,同时排除滞销低销量商品,使用query轻量化实现多层逻辑过滤。核心知识点:query字符串表达式、外部变量@引用、区间判断、多逻辑组合、文本匹配筛选。

① 字段含义说明

② 生成测试数据

import pandas as pdimport numpy as npnp.random.seed(88)df = pd.DataFrame({    "goods_id": range(1, 150),    "category": np.random.choice(["数码","家居","美妆"], 149),    "price": np.random.uniform(120, 6800, 149).round(2),    "stock": np.random.randint(0, 300, 149),    "monthly_sales": np.random.randint(0, 1200, 149),    "on_sale": np.random.choice([0, 1], 149)})df.to_excel("query_goods_data.xlsx", index=False)print("query多条件筛选商品测试数据生成完成")

查看测试数据

③ 核心代码

import pandas as pddf = pd.read_excel("query_goods_data.xlsx")# 定义外部阈值变量,query通过@调用min_price = 1000max_price = 5000min_stock = 50min_sales = 100# 复杂多条件筛选,一行完成,可读性远优于布尔索引filter_df = df.query(    "category == '数码' "    "& (@min_price <= price <= @max_price) "    "& stock >= @min_stock "    "& monthly_sales >= @min_sales "    "& on_sale == 1")print("符合筛选条件商品总数:", len(filter_df))print("\n筛选结果前8行:")print(filter_df[["goods_id","category","price","stock","monthly_sales"]].head(8))

结果展示

总结

query语法用自然字符串表达筛选逻辑,多条件场景可读性极强;支持@变量引用外部参数,动态阈值筛选更便捷;适合临时取数、快速数据探查,复杂报表批量筛选可搭配循环动态拼接表达式。

最新文章

随机文章