Пример #1
0
def test_logical():
    a = pa.array([True, False, False, None])
    b = pa.array([True, True, False, True])

    assert pc.and_(a, b) == pa.array([True, False, False, None])
    assert pc.and_kleene(a, b) == pa.array([True, False, False, None])

    assert pc.or_(a, b) == pa.array([True, True, False, None])
    assert pc.or_kleene(a, b) == pa.array([True, True, False, True])

    assert pc.xor(a, b) == pa.array([False, True, False, None])

    assert pc.invert(a) == pa.array([False, True, True, None])
Пример #2
0
    ARROW_CMP_FUNCS = {
        "eq": pc.equal,
        "ne": pc.not_equal,
        "lt": pc.less,
        "gt": pc.greater,
        "le": pc.less_equal,
        "ge": pc.greater_equal,
    }

    ARROW_LOGICAL_FUNCS = {
        "and":
        NotImplemented if pa_version_under2p0 else pc.and_kleene,
        "rand":
        NotImplemented
        if pa_version_under2p0 else lambda x, y: pc.and_kleene(y, x),
        "or":
        NotImplemented if pa_version_under2p0 else pc.or_kleene,
        "ror":
        NotImplemented
        if pa_version_under2p0 else lambda x, y: pc.or_kleene(y, x),
        "xor":
        NotImplemented if pa_version_under2p0 else pc.xor,
        "rxor":
        NotImplemented if pa_version_under2p0 else lambda x, y: pc.xor(y, x),
    }

    def cast_for_truediv(arrow_array: pa.ChunkedArray,
                         pa_object: pa.Array | pa.Scalar) -> pa.ChunkedArray:
        # Ensure int / int -> float mirroring Python/Numpy behavior
        # as pc.divide_checked(int, int) -> int