在极坐标中,我可以使用从掩码中或根据掩码zip_width
获取值:s1
s2
In [1]: import polars as pl
In [2]: import pyarrow as pa
In [3]: import pyarrow as pc
In [4]: s1 = pl.Series([1,2,3])
In [5]: mask = pl.Series([True, False, False])
In [6]: s2 = pl.Series([4, 5, 6])
In [7]: s1.zip_with(mask, s2)
Out[7]:
shape: (3,)
Series: '' [i64]
[
1
5
6
]
我该如何使用 PyArrow 来实现这一点?我试过了,pyarrow.compute.replace_with_mask
但效果不一样:
In [10]: import pyarrow.compute as pc
In [11]: import pyarrow as pa
In [12]: a1 = pa.array([1,2,3])
In [13]: mask = pa.array([True, False, False])
In [14]: a2 = pa.array([4,5,6])
In [15]: pc.replace_with_mask(a1, pc.invert(mask), a2)
Out[15]:
<pyarrow.lib.Int64Array object at 0x7f69d411afe0>
[
1,
4,
5
]
如何zip_with
在 PyArrow 中复制?
您可以使用 PyArrow 的
if_else
计算函数:该
if_else
函数根据掩码有效地将数组压缩zip_with
在一起,复制了 Polars 的行为。