首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算网状结构表达式

计算网状结构表达式
EN

Stack Overflow用户
提问于 2022-08-16 15:40:05
回答 2查看 108关注 0票数 0

如何在网状py箭头计算表达式中使用筛选器。

在基础上,我有一个pyarrow数据集(在本例中称为woodcan),希望将其转换为带有筛选器的表。

代码语言:javascript
复制
tab <- woodcan$to_table(ds$field('Region')=='Canada')

以上所示为Error in py_compare_impl(a, b, op) : ValueError: An Expression cannot be evaluated to python True or False. If you are using the 'and', 'or' or 'not' operators, use '&', '|' or '~' instead.

这个语法看起来怎么样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-15 19:58:49

可以使用py_run_stringpy_run_file生成运行python代码的表达式,并将其传递给to_tablefilter参数。

代码语言:javascript
复制
library(reticulate)

run.py <- py_run_string('
import pyarrow.dataset as ds
expr = ds.field("Region") == "Canada"
')

woodcan$to_table(filter=run.py$expr)

上面的代码需要以前安装py_arrow时使用reticulate

代码语言:javascript
复制
virtualenv_create("arrow-env")
arrow::install_pyarrow("arrow-env")
use_virtualenv("arrow-env")
票数 2
EN

Stack Overflow用户

发布于 2022-09-19 18:04:06

有了@Waldi的回答,我想出了另一种不依赖python字符串的方法。

根据这个答案,我们生成run.py$expr,这是一个<pyarrow.compute.Expression (Region == "Canada")>对象。

这就引出了一个问题,不然我们怎么能产生这样的结果呢?因为它是一个pyarrow.compute.Expression,告诉我们我们需要,当然,pyarrow.compute

因此,它只是将"==“替换为equal

代码语言:javascript
复制
pc <- import('pyarrow.compute')
filter=pc$equal(pc$field("Region"), pc$scalar("Canada"))

最后

代码语言:javascript
复制
woodcan$to_table(filter=filter)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73376668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档