上午发现了一个很好用的函数,query,这里详细记录学习下
pandas.DataFrame.query
DataFrame.query(self, expr, inplace=False, **kwargs)
具体的使用方法,可以参考官方文档,这里我记录些我觉得好玩儿的内容
官方介绍:
引用当前的变量
使用query函数,可以通过@
引用当前的变量
数据集的话,使用的是上一篇的内容:pandas实例-筛选与过滤-Fictional Army
p_name = 'Scouts'
df.query('regiment==@p_name')
注意几个点:
- query函数用对数据做筛选
- 这里可以直接使用column name
多个条件的话,可以使用and 或者 or
,同样也可以使用& 或者 |
df.query('deaths>100 and regiment=="Nighthawks"')
可以引用index
df.query('index in (1,2,3)')
这里直接使用index代表了
in 和 not in
就和SQL里一样使用的,看上面的那个例子
df.query('readiness in (1,2) or regiment in ("Scouts") ')
==
和!=
的特殊用法
通常==
和!=
表示相等或不相等,但是在query中,可以用来代替in
params=["Nighthawks","Scouts"]
df.query('regiment==@params')
关于Boolean
query中同样适用Boolean,就和布尔数组一样的玩儿法,但又稍微有点儿特殊
df['bools'] = df['readiness']<2
df.query('bools')
这里把布尔值作为了一列,要不然query中是找不到的,
这里还可以配合not
或者~
一起使用表示取反,就是非的意思
df.query('bools')
df.query('~bools')
df.query('not bools')
使用下来,感觉query,就是和SQL一样的,很好用
网友评论