什么时候应该在熊猫数据框上使用查询vs评估?

时间:2018-09-07 19:06:11

标签: python pandas

我曾经执行过df.query("a > 10")之类的操作,但它们工作正常。

但是,我发现尝试df.query("(a + b) / 2 > 10")时失败了。

幸运的是,当我尝试df.eval("(a + b) / 2 > 10")时,它工作正常。

这使我想到一个问题,是什么使eval与查询不同,以及何时应该使用一个对另一个?

1 个答案:

答案 0 :(得分:0)

df.query用于获取选定的行(满足条件的位置),而df.eval用于获取每一行的布尔输出。 例如

df123 = pd.DataFrame({'A': range(1, 6),
                   'B': range(10, 0, -2),
                   'C C': range(10, 5, -1)})
print(df123)
   A   B  C C
0  1  10   10
1  2   8    9
2  3   6    8
3  4   4    7
4  5   2    6
df123.query('A > B')
A B   C C
4 5   2   6
df123.eval('A > B')
0    False
1    False
2    False
3    False
4     True
dtype: bool

希望这会有所帮助!