Pandas:获取与查询相关的掩码
我非常喜欢Pandas中的query
方法。这个方法运行得很快,而且表达能力强,比起普通的选择方法来说,写起来更简洁。
如果给定一个查询条件,能不能得到一个True
和False
的布尔值掩码,来表示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