Python Pandas query函数详解:从基础筛选到多条件复杂查询

唐可
唐可
发布时间:2026-10-16| 6人浏览过
原创

本文深入解析Python Pandas库中query函数的核心用法。涵盖基础值匹配、数学表达式运算、变量引用(@符号)、列表包含(in)及多条件逻辑组合(&和|)。通过具体代码示例展示如何处理含空格列名及筛选后列选取,帮助开发者实现更简洁高效的数据过滤操作。

Pandas query函数基础用法与数据筛选

前言:

在Pandas库中,利用query函数执行数据筛选操作是一种高效且直观的方法。

query函数的标准调用格式如下:

df.query('expression')

常用方法:

#!/usr/bin/python
import pandas as pd
import numpy as np
data = {
 'brand':['Python',' C ',' C++ ','C#','Java'],
 'A':[10,2,5,20,16],
 'B':[4,6,8,12,10],
 'C':[8,12,18,8,2],
 'D':[6,18,14,6,12],
 'till years':[4,1,1,30,30]
 }
df = pd.DataFrame(data=data)
print("df数据打印:\n", df, '\n')

print('查找数据:\n', df.query('brand == "Python"'), '\n')
print('查找数据:\n', df[df['brand'] == "Python"], '\n')

执行查找时,既可采用df.query('brand == "Python"')语法,也可使用传统的df[df['brand'] == "Python"]方式,两者结果一致。

输出结果:

df数据打印: brand A B C D till years 0 Python 10 4 8 6 4 1 C 2 6 12 18 1 2 C++ 5 8 18 14 1 3 C# 20 12 8 6 30 4 Java 16 10 2 12 30 查找数据: brand A B C D till years 0 Python 10 4 8 6 4 查找数据: brand A B C D till years 0 Python 10 4 8 6 4 通过数学表达式来筛选:

除了精确匹配特定值,query函数还支持基于数学表达式的复杂筛选,涵盖大于(>)、小于(<)、加减乘除(+、-、*、/)等运算符。

基于数学表达式的数值筛选

print('查找数据:\n', df.query('A > 15'), '\n')

输出结果:

查找数据: brand A B C D till years 3 C# 20 12 8 6 30 4 Java 16 10 2 12 30

通过变量筛选:

在编写较长程序时,常需将筛选条件定义为变量。在query函数中,只需在变量名前添加@符号即可正确引用该变量作为判断标准。

具体示例如下:

利用变量与@符号进行动态查询

name = 'Java'
print('查找数据:\n', df.query('brand == @name'), '\n')

输出结果:

查找数据: brand A B C D till years 4 Java 16 10 2 12 30 通过列表数据筛选:

若需在一列中筛选多个符合要求的值,可通过定义列表(list)并结合in关键字实现,具体示例如下:

通过列表与in关键字筛选多值

name = ['Python', 'Java']
print('查找数据:\n', df.query('brand in @name'), '\n')

输出结果:

查找数据: brand A B C D till years 0 Python 10 4 8 6 4 4 Java 16 10 2 12 30

多条件筛选:

  • 需同时满足多个并列条件时,使用符号&或关键字and连接。
  • 只需满足任一条件时,使用符号|或关键字or连接。

多条件逻辑组合与空格列名处理

name = ['Python', 'Java']
print('查找数据:\n', df.query('brand in @name & A > 15'), '\n')

输出结果:

查找数据: brand A B C D till years 4 Java 16 10 2 12 30

列名称中包含空格的情况,需使用反引号(``)进行包裹处理:

若错误地使用单引号或双引号包裹含空格的列名,程序将会报错。

print('查找数据:\n', df.query('`till years` > 10'), '\n')

输出结果:

查找数据: brand A B C D till years 3 C# 20 12 8 6 30 4 Java 16 10 2 12 30

筛选后选取数据列:

筛选后指定列的选取技巧

name = ['brand', 'A', 'B', 'till years']
print('查找数据:\n', df.query('`till years` > 10')[name], '\n')

输出结果:

查找数据: brand A B till years 3 C# 20 12 30 4 Java 16 10 30

总结:

当涉及多条件筛选逻辑时,使用query函数能使代码结构更加简洁清晰:

print(df[(df['brand'] == 'Python') & (df['A'] == 10) & (df['B'] == 4)])
print(df.query('brand == "Python" & A == 10 & B == 4'))

到此这篇关于python pandas query的使用方法的文章就介绍到这了,更多相关python pandas query 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。