88from narwhals .exceptions import InvalidOperationError
99from tests .utils import Constructor , ConstructorEager , assert_equal_data
1010
11- data = {"a" : [1 , 1 , 2 ]}
12- data_str = {"a" : ["x" , "x" , "y" ]}
11+ data = {"a" : [1 , 1 , None , 2 ]}
12+ data_str = {"a" : ["x" , "x" , "y" , None ]}
1313
1414
1515def test_unique_expr (constructor : Constructor ) -> None :
@@ -20,8 +20,8 @@ def test_unique_expr(constructor: Constructor) -> None:
2020 else does_not_raise ()
2121 )
2222 with context :
23- result = df .select (nw .col ("a" ).unique ())
24- expected = {"a" : [1 , 2 ]}
23+ result = df .select (nw .col ("a" ).unique ()). sort ( "a" )
24+ expected = {"a" : [None , 1 , 2 ]}
2525 assert_equal_data (result , expected )
2626
2727
@@ -34,6 +34,9 @@ def test_unique_expr_agg(
3434 result = df .select (nw .col ("a" ).unique ().sum ())
3535 expected = {"a" : [3 ]}
3636 assert_equal_data (result , expected )
37+ result = df .drop_nulls ().select (nw .col ("a" ).unique ().len ())
38+ expected = {"a" : [2 ]}
39+ assert_equal_data (result , expected )
3740
3841
3942def test_unique_illegal_combination (constructor : Constructor ) -> None :
@@ -47,5 +50,18 @@ def test_unique_illegal_combination(constructor: Constructor) -> None:
4750def test_unique_series (constructor_eager : ConstructorEager ) -> None :
4851 series = nw .from_native (constructor_eager (data_str ), eager_only = True )["a" ]
4952 result = series .unique (maintain_order = True )
53+ expected = {"a" : ["x" , "y" , None ]}
54+ assert_equal_data ({"a" : result }, expected )
55+ result = series .drop_nulls ().unique (maintain_order = True )
5056 expected = {"a" : ["x" , "y" ]}
5157 assert_equal_data ({"a" : result }, expected )
58+
59+
60+ def test_unique_series_numeric (constructor_eager : ConstructorEager ) -> None :
61+ series = nw .from_native (constructor_eager (data ), eager_only = True )["a" ]
62+ result = series .unique (maintain_order = True )
63+ expected = {"a" : [1 , None , 2 ]}
64+ assert_equal_data ({"a" : result }, expected )
65+ result = series .drop_nulls ().unique (maintain_order = True )
66+ expected = {"a" : [1 , 2 ]}
67+ assert_equal_data ({"a" : result }, expected )
0 commit comments