下面是Pandas查询数据df.query
的完整攻略:
什么是df.query
?
Pandas中的数据框(DataFrames)可以使用query
函数从数据结构中查询子集。query
函数使用字符串表达式来查询数据框中的行。使用此函数可以通过快速应用自然语言查询语句来过滤数据,这使得文本搜索变得容易。
df.query
语法
使用df.query()
函数可以接收一个字符串表达式作为参数,格式如下:
DataFrame.query(expr, inplace=False, **kwargs)
expr
:查询字符串表达式,该参数既可以是字符串也可以是一个函数。如果该参数为函数,则返回值必须是一个布尔类型对象,并且函数将DataFrame
中的每一行作为输入参数。inplace
:删除或更改查询过程后修改现有数据帧还是返回一个新的数据帧。默认状态下设置为False,如果设置为True,则返回一个新的数据帧。**kwargs
:也可以使用其他关键字参数。
df.query
示例
下面我们来使用两个具体的例子来说明df.query
的使用:
示例1
首先,我们将创建一个包含两列的数据帧,分别是:
Name
:包含人名的列Age
:包含年龄的列
import pandas as pd
data = {'Name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'Age': [28, 22, 25, 32, 35]}
df = pd.DataFrame(data)
接下来,我们将使用df.query()
函数来查找年龄为28岁的人的姓名:
df.query('Age == 28')
输出结果如下:
Name Age
0 Jason 28
在这个例子中,我们传递了基于Python语言的布尔表达式,在本例中 Age==28
这个条件为真。这将导致df.query()
函数按照条件进行过滤,并返回结果。
示例2
下面,我们尝试使用df.query()
函数来查找年龄大于25岁,并且名字以字母“J”开头的人的姓名和年龄:
df.query('Age > 25 and Name.str.startswith("J")', engine='python')
输出结果如下:
Name Age
0 Jason 28
3 Jake 32
在这个例子中,我们使用了两个条件,第一个条件是Age>25
,表示年龄大于25岁;第二个条件是Name.str.startswith("J")
,它使用了Pandas的.str
属性,来匹配以字母“J”开头的人名。最终,我们将结果作为返回值返回了。
总结
上述两个示例展示了如何使用df.query()
函数来过滤数据帧。您可以使用Python的比较,逻辑和文本操作符来编写表达式,同时在过滤前也可以使用Pandas的函数来进行数据预处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas查询数据df.query的使用 - Python技术站