Path: blob/main/py-polars/tests/unit/operations/test_drop_nulls.py
8420 views
from __future__ import annotations12import pytest3from hypothesis import given45import polars as pl6from polars.testing import assert_frame_equal, assert_series_equal7from polars.testing.parametric import series8910@given(s=series(allow_null=True))11def test_drop_nulls_parametric(s: pl.Series) -> None:12result = s.drop_nulls()13assert result.len() == s.len() - s.null_count()1415filter_result = s.filter(s.is_not_null())16assert_series_equal(result, filter_result)171819def test_df_drop_nulls_struct() -> None:20df = pl.DataFrame(21{"x": [{"a": 1, "b": 2}, {"a": 1, "b": None}, {"a": None, "b": 2}, None]}22)2324result = df.drop_nulls()2526expected = df.head(3)27assert_frame_equal(result, expected)282930@pytest.mark.parametrize("maintain_order", [False, True])31def test_drop_nulls_in_agg_25349(maintain_order: bool) -> None:32lf = pl.LazyFrame({"a": [1, 2], "b": [None, 1]})33q = lf.group_by("a", maintain_order=maintain_order).agg(34pl.col.b.first().drop_nulls()35)36assert_frame_equal(37q.collect(),38pl.DataFrame({"a": [1, 2], "b": [[], [1]]}),39check_row_order=maintain_order,40)414243@pytest.mark.parametrize("maintain_order", [False, True])44def test_drop_nulls_on_literal_25355(maintain_order: bool) -> None:45df = pl.DataFrame({"key": [0, 1]})46result = df.group_by("key", maintain_order=maintain_order).agg(47x=pl.lit(0, dtype=pl.Int64).drop_nulls()48)49assert_frame_equal(50result,51df.with_columns(x=pl.lit([0], dtype=pl.List(pl.Int64))),52check_row_order=maintain_order,53)545556