Pytables NumExpr VALUERERROR:使用大量条件查询时输入过多

2024-05-14 20:48:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在查询pytables表时遇到了这个错误,where方法传递了一个包含50个条件的字符串。这些条件基本上是一个sqlin子句的翻译,也就是说,我希望得到一个特定字段等于某个值列表的记录。在

C:\Python2764\lib\site-packages\numexpr\necompiler.pyc in evaluate(ex, local_dict, global_dict, out, order, casting, **kwargs)
    744     kwargs = {'out': out, 'order': order, 'casting': casting,
    745               'ex_uses_vml': ex_uses_vml}
--> 746     return compiled_ex(*arguments, **kwargs)

ValueError: too many inputs

执行相同查询的另一种方法是什么?我的第一个想法是执行查询50次,每个值一次,然后合并结果。我希望有一个更优雅的解决办法。在

对于可以传递给numexpr的条件数量是否有已知的限制?在


Tags: 方法字符串错误orderoutwhere条件pytables
2条回答

我在GitHub上问了同样的问题。(巧合的是,我有50个条件从一个sqlin子句中翻译过来)它们的响应速度非常快。这是一个新问题:

This is a limitation of numexpr based on the NPY_MAXARGS value which is defined in numpy. Upgrading to numpy v1.8 may fix the issue. See numpy/numpy#226 and [1]. ...
...
Oh and by the way, the limit is NPY_MAXARGS=32

你用什么新版本的?numpy 1.8可以。在

编辑:实际上它在Numpy1.8上也不起作用。他们还有NPY_MAXARGS=32

如果您使用pandas.DataFrame.query,那么您可以尝试将engine='python'更改为**kwargs。在

相关问题 更多 >

    热门问题