如何使用query()方法查询Pandas数据框?

如何使用query()方法查询Pandas数据框?

作者提供的图片

介绍

如果您一直在使用pandas进行数据分析,但还不知道Pandas查询方法,那么您并不孤单。查询方法直观、清晰,并且比从DataFrame中筛选行的传统方法更简洁。但是,出于某种原因,尽管其简单性,Pandas查询方法仍未被广泛使用。

因此,在本文中,我们将向您介绍Pandas查询方法和语法,并提供示例,以便您可以立即开始使用它。

您可以从GitHub上访问本文的完整代码。

最初发表于2022年10月18日的pythonsimplifed.com

Pandas查询方法

Pandas的查询方法(df.query())用于查询DataFrame列并仅过滤所需的行。

从DataFrame中筛选行最常用的方法是布尔索引和位置索引方法。请参考下面的示例,了解我所说的布尔索引和位置索引的含义。我们将使用Seaborn库中的tips数据集进行示例。

import pandas as pdimport seaborn as snsdf = sns.load_dataset('tips')

如果我们只想选择满足两个条件的行——非吸烟者(smoker=’No’)和女性,则使用布尔索引和位置索引,我们可以编写以下代码。

# 布尔索引df[ (df['smoker']=='No') & (df['sex'] =='Female') ]# 位置索引,使用.loc[]和.iloc[]df.loc[(df['smoker'] == 'No') & (df['sex'] == 'Female')]

但是,上述代码也可以使用查询方法重写,如下所示。正如您所看到的,尽管其直观、清晰和简洁,查询方法经常被pandas用户忽视。在下一节中,让我们详细了解查询方法。

df.query('smoker == "No" & sex=="Female"')

语法

查询方法的语法如下所示:

DataFrame.query(expr, inplace=False, **kwargs)
  • expr — 表达式/条件,用于筛选…