我曾经进行过df.query("a > 10")
等操作他们工作正常。
但是,当我尝试 df.query("(a + b) / 2 > 10")
时,我注意到,失败了。
幸运的是,当我尝试时df.eval("(a + b) / 2 > 10")
,它工作正常。
这让我想到了一个问题,是什么让 eval 与查询不同,我们什么时候应该使用一种还是另一种?
最佳答案
df.query 用于获取选定的行(满足条件),df.eval 用于获取每行的 bool 输出。
例如
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
希望这可以帮助!
关于python - 我什么时候应该在 Pandas 数据帧上使用 query vs eval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228342/