微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

调用 StructArray.from_arrays 指定缺失值掩码

如何解决调用 StructArray.from_arrays 指定缺失值掩码

我正在尝试创建一个缺少值的 pyarrow.StructArray

当我使用 pyarrow.array 传递表示我的记录的元组时,我工作正常:

>>> pyarrow.array(
    [
        None,(1,"foo"),],type=pyarrow.struct(
        [pyarrow.field('col1',pyarrow.int64()),pyarrow.field("col2",pyarrow.string())]
    )
)
-- is_valid:
  [
    false,true
  ]
-- child 0 type: int64
  [
    0,1
  ]
-- child 1 type: string
  [
    "","foo"
  ]

但我想使用 StructArray.from_arrays 并且据我所知没有办法为缺失值提供掩码:

pyarrow.StructArray.from_arrays(
    [
        [None,1],[None,"foo"]
    ],fields=[pyarrow.field('col1',pyarrow.string())]
)
-- is_valid: all not null
-- child 0 type: int64
  [
    null,1
  ]
-- child 1 type: string
  [
    null,"foo"
  ]

有没有办法从数组创建一个 StructArray,指定一个缺失值的掩码?或者以后有没有办法敷面膜?

解决方法

通过在 "scripts": { "test": "echo \"No test specified\"" }, 中传递 mask(-> https://issues.apache.org/jira/browse/ARROW-12677,感谢您打开问题)来实现这一点确实很好。

但就目前而言,一种可能的解决方法可能是让用户使用较低级别的 StructArray.from_arrays

StructArray.from_buffers

创建一个pyarrow掩码数组来构造一个有效性缓冲区:

struct_type = pyarrow.struct(
    [pyarrow.field('col1',pyarrow.int64()),pyarrow.field("col2",pyarrow.string())]
)
col1 = pyarrow.array([None,1])
col2 = pyarrow.array([None,"foo"])

然后我们可以使用它作为 mask = np.array([True,False]) validity_mask = pyarrow.array(~mask) validity_bitmask = validity_mask.buffers()[1] 中的第一个缓冲区来指示 StructArray 中的缺失值:

from_buffers

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?