Pandas:获取与查询相关的掩码

4 投票
1 回答
1891 浏览
提问于 2025-04-18 06:33

我非常喜欢Pandas中的query方法。这个方法运行得很快,而且表达能力强,比起普通的选择方法来说,写起来更简洁。

如果给定一个查询条件,能不能得到一个TrueFalse的布尔值掩码,来表示query返回的值呢?

举个例子,假设我有:

my_query = 'values >= {0} and values <= {1}'.format(Q1, Q2)
inliers  = df.query(my_query)

inliers会保存满足查询条件的数据,但我能不能也得到这个查询的掩码呢?

得到这个掩码会很有用,比如说可以快速反转查询结果,或者得到一个和原始数据框大小相同的结果。

1 个回答

13

使用 df.eval()。其实 df.query() 就是 df[df.eval()] 的一种写法。

In [32]: df = DataFrame(dict(A = range(5)))

In [33]: df
Out[33]: 
   A
0  0
1  1
2  2
3  3
4  4

In [34]: df.query('A>3')
Out[34]: 
   A
4  4

In [36]: df.eval('A>3')
Out[36]: 
0    False
1    False
2    False
3    False
4     True
dtype: bool

撰写回答