在Pandas中,query是一个功能强大的方法,允许使用类似SQL的表达式来筛选DataFrame。
这个方法可以极大地简化基于条件的数据筛选操作。
本文和你一起来探索query函数,让你以最短的时间明白这个函数的原理。
也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。
一、query函数定义
在数据框处理中,经常需要运用一些条件对数据框进行筛选,query常用于该操作。其基本调用语法如下:
query(expr, inplace=False, **kwargs)
参数详解:
expr
:必传参数,用于筛选DataFrame的表达式。
inplace
:布尔值,默认为False。如果为True,则直接在原始DataFrame上进行修改。
**kwargs
:用于指定eval函数的额外关键字参数。在大多数情况下,不需要直接设置。
二、query函数实例
1 实例1 首先生成一个含有A和B两列的数据框,具体代码如下: import pandas as pd data = {'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]} df = pd.DataFrame(data) display(df) 得到结果:
接着用query函数筛选满足条件的行,具体代码如下: # 选择 A 列大于 1 且 B 列小于 7 的行 result = df.query('A > 1 and B < 7') display(result) 得到结果:
可以发现这种方法可以快速筛选我们想要的数据。 有时我们可能想在查询中使用变量,这时需要用@符号进行标识,具体代码如下: a_value = 1 b_value = 7 result2 = df.query('A > @a_value and B < @b_value') display(result2) 得到结果:
上面的筛选条件比较简单,有时需要使用复杂表达式,我们来看下具体代码: result3 = df.query('A * 3 > B') display(result3) 得到结果:
可以发现,Python中有效的复杂表达式,也可以在query函数中执行。为了大家对这个函数有一个更清晰的认知,我们再来看一个实例。 2 实例2 首先导入Pandas库并创建一个DataFrame,具体代码如下: import pandas as pd # 创建一个示例 DataFrame data = { 'Name': ['Alice', 'Bob', 'Charlie', 'David'], 'Age': [25, 30, 35, 40], '性别': ['女', '男', '男', '男'], 'Salary': [50000, 60000, 70000, 80000] } df = pd.DataFrame(data) display(df) 得到结果:
接着用query函数筛选年龄大于30的行,具体代码如下: # 筛选年龄大于 30 的行 filtered_df1 = df.query('Age > 30') display(filtered_df1) 得到结果:
之前筛选的列名都是英文的,最后我们对中文列名进行筛选。 接下来用三种不同的写法筛选性别为男性的行,第一种代码如下: filtered_df2 = df.query("性别 == '男'") display(filtered_df2) 得到结果:
第二种代码如下: Gender = '男' filtered_df3 = df.query('性别 == @Gender') display(filtered_df3) 得到结果:
第三种代码如下: filtered_df4 = df.query('性别 == "男"') display(filtered_df4) 得到结果:
从结果知,不管是中文列名还是英文列名,都可以顺利地用query函数进行条件筛选。 至此,Python中的query函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。