如何解决有没有办法过滤掉 Arrow::Array 和一些谓词?
假设我有一个 Arrow::Array
(或 Dataframe
或 ChunkedArray
,不重要)并且我有一些谓词。我想计算一个新的 Arrow::BooleanArray
,它只存储应用于每个数组元素的这个谓词的结果。
我的情况是我有两个 date32
排序数组,我想返回一个掩码,告诉我第一个数组的值是否存在于第二个数组中。像下面这样:
std::shared_ptr<arrow::BooleanArray> getDatesMask(
const std::shared_ptr<arrow::Array>& lhs,const std::shared_ptr<arrow::Array>& lhs)
{
// some pseudo code how this Could work
// for date in lhs:
// res.Append(date in rhs);
// return res;
}
解决方法
这听起来像您需要 is_in
计算函数:
std::shared_ptr<arrow::BooleanArray> getDatesMask(
const std::shared_ptr<arrow::Array>& haystack,const std::shared_ptr<arrow::Array>& needles)
{
arrow::Datum mask = arrow::compute::IsIn(haystack,needles).ValueOrDie();
return std::static_pointer_cast<arrow::BooleanArray>(mask.make_array());
}
is_in
(和其他计算函数)的文档位于:https://arrow.apache.org/docs/cpp/compute.html#containment-tests
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。