对于dataframe
格式的数据,使用多个筛选条件筛选时,建议使用query()
:
- 使用
query
关键词不会产生新的空间开销,可以更加节省内存 - 在小样本下效率低于传统方法(比如q1_2),但是在大样本下效率高于传统方法
案例
生成数据:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0, 10, size=(1000, 3)), columns=['a', 'b', 'c'])
筛选条件:a列 > b列 且 c列值=2
q1_1 = df.query("a > b & c == 2")
q1_2 = df[(df['a'] > df['b']) & (df['c'] == 2)]
# q1_1与q1_2结果相同
筛选条件:a列 = b列 且 c列值-1 大于等于2
q2 = df.query("a == b and c-1 >= 2")
筛选条件:a列值为0 或 b列值为0
q3 = df.query("a==0 or b==0")
筛选条件:a列的值等于 变量c
c = 3
q4 = df.query("a == @c")