目前已更新:query()
query函数
简单来说是用来进行数据筛选的函数。
1.选取A列等于a的行:
df.query(" A == 'a' ")
也可以写成以下形式:
df[df['A']=="a"]
2.也可以用来筛选数值:
df.query(" A == 6")
3.也可以用数学表达式筛选:
除了直接通过等于某个值来筛选, query 函数还支持通过数学表达式来进行数据筛选,包括 >、 <、 +、 -、 *、 / 等。
4.可以直接比较两列:
df.query('A>B')
df.query('A*2<B+D')
5.可以通过变量进行筛选:
在程序比较长的时候,经常会使用变量来作为筛选条件, query 函数在使用变量作为判断标准时,通过在变量前面添加 @ 符号来实现,示例如下
# 通过变量来筛选数据,在变量前使用 @ 符号即可
name = 'a'
df.query('A == @name')
6.可以同时筛选多个值(使用列表的形式):
# 需要注意下 双引号 和 单引号的分开使用
df.query('A in ["a","b"]')
注意单双引号分开使用。
7.多条件筛选:
query 函数支持多种条件的组合。
- 两者都需要满足的并列条件使用符号 &,或 单词 and
- 只需要满足其中之一的条件使用符号 |,或 单词 or
df.query('A in ["a","b"] & B > 7')
8.列名称有空格的情况:
当 dataframe 的列名称中有空格或其他特殊符号的时候,需要使用 反引号,即键盘ESC键下面的按键(就是键盘上第二排第一个按键,有‘~’这个符号的按键) 来将列名包裹起来,示例如下:
df.query("`till years` < 5")
注意,如果使用单引号,将会报错。
9.筛选后选取数据列:
在数据筛选后,还可以选择需要的数据列,如下:
df.query("A > B +C ")[['A','B']]
注意是两个方括号。