pandas查询函数query的用法说明
在 Pandas 中,有一种灵活且功能强大的子集选择语法——query
。使用 query
的好处之一是可以用数据框中的变量引用来引用全局 Python 变量,从而使代码更简洁。
基本使用
query
可以理解为一种过滤数据的方式,可以根据某个特定条件或一组特定条件来选择数据。以下是 query
函数的基本语法:
dataframe.query("condition")
其中,condition
是根据 Pandas 表达式语法编写的字符串。条件语句可以使用与、或、小于、大于等逻辑运算符,并使用 Pandas 中可用的各种函数。条件语句的结果必须是一个布尔值。
下面是一个简单的例子。假设我们的数据框中包含以下数据:
name city age
0 Joe Paris 23
1 Jim New York 32
2 Bob London 41
3 Ann Berlin 35
要选择年龄大于 30 的记录,我们可以编写以下代码:
df.query("age > 30")
这将返回一个新的数据框,只包含年龄大于 30 的记录,即:
name city age
1 Jim New York 32
2 Bob London 41
3 Ann Berlin 35
使用变量
query
还可以使用在数据框范围内定义的变量。例如,假设我们定义了一个变量 min_age
来代表我们想要选择的最小年龄。使用 query
,我们可以简单地使用变量进行筛选:
min_age = 30
df.query("age > @min_age")
这里 @
符号用于引用变量。这个表达式将选择年龄大于变量 min_age
的数据行。
含有字符串的查询
对于包含字符串的列,可以使用 str
属性来对其进行筛选。例如,假设我们有一个包含产品名称的列,我们要选择名称中包含 “fruit” 的产品。我们可以使用以下代码:
df.query("product_name.str.contains('fruit')")
这将返回一个新数据框,其中产品名称包含 “fruit” 的行。
示例
下面是更多关于 query
函数的例子,包括如何组合多个条件:
# 选择城市为 "New York" 的年龄大于 30 的记录
df.query("city == 'New York' and age > 30")
# 选择名称以 "J" 开头的记录,且城市不是 "Paris"
df.query("name.str.startswith('J') and city != 'Paris'")
# 选择是 "Paris" 或 "London" 的记录
df.query("city in ['Paris', 'London']")
扩展阅读
Pandas 的 query
语法非常灵活,可以根据需要编写多种类型和格式的查询语句。有关详细信息,请参阅 Pandsa 官方文档中关于 query() 方法 的说明。