[Pandas] query()函数

文章介绍了如何利用Python的Pandas库中的query函数对数据进行筛选,包括按特定列的值、数学表达式、变量以及多个条件进行筛选,同时也展示了如何选取筛选后的特定列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在数据处理过程中经常会进行数据筛选,获得自己想要的数据

使用Pandas进行数据筛选的方法有很多,在这里主要讲解使用查询函数query()进行数据筛选操作

导入数据 

import pandas as pd
 
df = pd.DataFrame([['liver','E',89,21,24,64],
                   ['Arry','C',36,37,37,57],
                   ['Ack','A',57,60,18,84],
                   ['Eorge','C',93,96,71,78],
                   ['Oah','D',65,49,61,86]
                  ], 
                   columns = ['name','team','Q1','Q2','Q3','Q4'])

df

问题1: 筛选'name'列中值为 'Eorge' 的数据行 

直接通过等于==某个值进行数据筛选 

# 等价于 df[df['name']=="Eorge"]
res1 = df.query('name == "Eorge"')

res1

问题2: 筛选'Q1'大于'Q4'的数据行

通过数学表达式进行数据筛选 

res2 = df.query('Q1 > Q4')

res2 

扩展补充练习

'''
   name team  Q1  Q2  Q3  Q4
1  Arry    C  36  37  37  57
'''
df.query('Q1 * 2 <= Q2 + Q3')

问题3: 筛选'team'列中值为'C'的数据行 

通过变量进行数据筛选,query函数在使用变量作为判断标准时,通过在变量前面添加@符号来实现

team_number = 'C'
res3 = df.query('team == @team_number')

res3

问题4:  筛选'name'列中值为 'Arry' 或 'Ack'的数据行 

通过列表进行数据筛选,当需要在某列中筛选多个符合要求的值的时候,可以通过列表(list)来实现

res4 = df.query('name in ["Arry","Ack"]') 

res4

问题5: 筛选'Q1'列中值大于70 且 'Q2'列中的值大于50的数据行 

多条件进行数据筛选,query函数支持多种条件的组合

① 两者都需要满足的条件使用符号 & 单词 and

② 只需要满足其中之一的条件使用符号 |单词 or

res5 = df.query('Q1 > 70 & Q2 > 50')

res5

筛选后选取数据列'name'、'Q1'和'Q2'

res6 = df.query('Q1 > 70 & Q2 > 50')[['name','Q1','Q2']]

res6

扩展补充练习

import pandas as pd

df1 = pd.DataFrame({'col1':[1, 2, 3, 4, 5, 6],
                   'col2':[1, 2, 3, 4, 5, 6],
                   'col3':[1, 2, 3, 4, 5, 6]})

query_list = [1, 2]

res7 = df1.query('col3 not in @query_list')[['col1', 'col2']]

df1

res7 

pandas中,query函数用于筛选和查询数据。该函数的参数包括expr和inplace。 expr是查询条件的表达式,可以使用逻辑运算符和比较运算符对数据进行筛选。例如,可以使用等于运算符“==”来选择特定值的行,也可以使用逻辑运算符“&”和“|”来组合多个条件。可以在查询中使用DataFrame中的列名,以及各种Python运算符和函数。 inplace参数表示是否替换原数据,默认为False。如果设置为True,查询结果将直接应用于原始DataFrame,否则将返回查询结果的新DataFrame。 下面是一个示例,演示如何使用query函数进行数据查询: ```python import pandas as pd # 创建一个DataFrame df = pd.DataFrame({ 'A': ['e', 'd', 'c', 'b', 'a'], 'B': ['f', 'b', 'c', 'd', 'e'], 'C': range(0, 10, 2), 'D': range(10, 0, -2), 'E.E': range(10, 5, -1) }) # 使用query函数查询数据 result = df.query('A=="b" & C>2') # 打印查询结果 print(result) ``` 在上面的示例中,我们创建了一个DataFrame,并使用query函数选择了'A'列等于'b'并且'C'列大于2的行。最后,我们打印出查询结果。 希望这个例子能够帮助你理解pandasquery函数的用法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [10个快速入门Query函数使用的Pandas的查询示例](https://blog.csdn.net/tMb8Z9Vdm66wH68VX1/article/details/126357179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [14、Pandasquery()函数](https://blog.csdn.net/m0_46128639/article/details/122609263)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Pandas Query 方法深度总结](https://blog.csdn.net/zhouwei_1989_/article/details/125984285)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值