pandas 查询函数query的用法说明

  • Post category:Python

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() 方法 的说明。