Python Pandas query函数详解:从基础筛选到多条件复杂查询
本文深入解析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 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













