我曾经执行过df.query("a > 10")
之类的操作,但它们工作正常。
但是,我发现尝试df.query("(a + b) / 2 > 10")
时失败了。
幸运的是,当我尝试df.eval("(a + b) / 2 > 10")
时,它工作正常。
这使我想到一个问题,是什么使eval与查询不同,以及何时应该使用一个对另一个?
答案 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
希望这会有所帮助!