Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/py-polars/tests/unit/series/test_zip_with.py
6939 views
1
import pytest
2
3
import polars as pl
4
from polars.testing import assert_series_equal
5
6
7
def test_zip_with_all_true_mask() -> None:
8
s1 = pl.Series([1, 2, 3])
9
s2 = pl.Series([4, 5, 6])
10
mask = pl.Series([True, True, True])
11
12
result = s1.zip_with(mask, s2)
13
assert_series_equal(result, s1)
14
15
16
def test_zip_with_all_false_mask() -> None:
17
s1 = pl.Series([1, 2, 3])
18
s2 = pl.Series([4, 5, 6])
19
mask = pl.Series([False, False, False])
20
21
result = s1.zip_with(mask, s2)
22
assert_series_equal(result, s2)
23
24
25
def test_zip_with_mixed_mask() -> None:
26
s1 = pl.Series([1, 2, 3, 4, 5])
27
s2 = pl.Series([5, 4, 3, 2, 1])
28
mask = pl.Series([True, False, True, False, True])
29
30
result = s1.zip_with(mask, s2)
31
expected = pl.Series([1, 4, 3, 2, 5])
32
assert_series_equal(result, expected)
33
34
35
def test_zip_with_series_comparison() -> None:
36
s1 = pl.Series([1, 2, 3, 4, 5])
37
s2 = pl.Series([5, 4, 3, 2, 1])
38
39
result = s1.zip_with(s1 < s2, s2)
40
expected = pl.Series([1, 2, 3, 2, 1])
41
assert_series_equal(result, expected)
42
43
44
def test_zip_with_null_values() -> None:
45
s1 = pl.Series([1, None, 3, 4])
46
s2 = pl.Series([5, 6, None, 8])
47
mask = pl.Series([True, True, False, False])
48
49
result = s1.zip_with(mask, s2)
50
expected = pl.Series([1, None, None, 8])
51
assert_series_equal(result, expected)
52
53
54
def test_zip_with_length_mismatch() -> None:
55
s1 = pl.Series([1, 2, 3])
56
s2 = pl.Series([4, 5])
57
mask = pl.Series([True, False, True])
58
59
with pytest.raises(pl.exceptions.ShapeError):
60
s1.zip_with(mask, s2)
61
62
63
def test_zip_with_bad_input_type() -> None:
64
s1 = pl.Series([1, 2, 3])
65
s2 = pl.Series([4, 5, 6])
66
mask = pl.Series([True, False, True])
67
68
with pytest.raises(
69
TypeError,
70
match="expected `other` .*to be a 'Series'.* not 'DataFrame'",
71
):
72
s1.zip_with(mask, pl.DataFrame(s2)) # type: ignore[arg-type]
73
74
with pytest.raises(
75
TypeError,
76
match="expected `other` .*to be a 'Series'.* not 'LazyFrame'",
77
):
78
s1.zip_with(mask, pl.DataFrame(s2).lazy()) # type: ignore[arg-type]
79
80
class DummySeriesSubclass(pl.Series):
81
pass
82
83
s1 = DummySeriesSubclass(s1)
84
s2 = DummySeriesSubclass(s2)
85
mask = DummySeriesSubclass(mask)
86
87
s1.zip_with(mask, s2)
88
89