gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:58:33 24 4
gpt4 key购买 nike

我正在尝试创建一个缺少值的 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.int64()), pyarrow.field("col2", pyarrow.string())]
)
-- is_valid: all not null
-- child 0 type: int64
[
null,
1
]
-- child 1 type: string
[
null,
"foo"
]

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

最佳答案

通过在 StructArray.from_arrays 中传递一个 mask 确实很好(-> https://issues.apache.org/jira/browse/ARROW-12677,感谢您打开这个问题)。

但目前,一个可能的解决方法是使用较低级别的 StructArray.from_buffers:

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

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

mask = np.array([True, False])
validity_mask = pyarrow.array(~mask)
validity_bitmask = validity_mask.buffers()[1]

然后我们可以将其用作 from_buffers 中的第一个缓冲区,以指示 StructArray 中的缺失值:

>>> pyarrow.StructArray.from_buffers(struct_type, len(col1), [validity_bitmask], children=[col1, col2])
<pyarrow.lib.StructArray object at 0x7f8b560fa2e0>
-- is_valid:
[
false,
true
]
-- child 0 type: int64
[
null,
1
]
-- child 1 type: string
[
null,
"foo"
]

关于python - 调用 StructArray.from_arrays 指定缺失值掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67417110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com