@@ -958,3 +958,41 @@ def test_rmod_consistent_large_series():
958
958
expected = Series ([1 ] * 10001 )
959
959
960
960
tm .assert_series_equal (result , expected )
961
+
962
+
963
+ from pandas ._testing import assert_numpy_array_equal , assert_extension_array_equal
964
+
965
+ # Test Case 1: Basic numeric unique with NA (dropna=False)
966
+ def test_unique_numeric_dropna_false ():
967
+ s = pd .Series ([1 , 2 , 2 , pd .NA , 3 , pd .NA ])
968
+ result = s .unique (dropna = False )
969
+ expected = np .array ([1 , 2 , pd .NA , 3 ], dtype = object )
970
+ assert_numpy_array_equal (result , expected )
971
+
972
+ # Test Case 2: Empty Series
973
+ def test_unique_empty_series ():
974
+ s = pd .Series ([], dtype = 'float64' )
975
+ result = s .unique ()
976
+ expected = np .array ([], dtype = 'float64' )
977
+ assert_numpy_array_equal (result , expected )
978
+
979
+ # Test Case 3: Categorical data
980
+ def test_unique_categorical ():
981
+ s = pd .Series (pd .Categorical (['a' , 'b' , 'a' , pd .NA ]))
982
+ result = s .unique (dropna = False )
983
+ expected = pd .Categorical (['a' , 'b' , pd .NA ])
984
+ assert_extension_array_equal (result , expected )
985
+
986
+ # Test Case 4: NA values
987
+ def test_unique_with_nas_simple ():
988
+ s = pd .Series ([1 , 2 , 2 , pd .NA , 3 , pd .NA ], dtype = 'Int64' )
989
+
990
+ # Current behavior (returns ExtensionArray)
991
+ result = s .unique ()
992
+ expected = pd .array ([1 , 2 , 3 ], dtype = 'Int64' )
993
+ tm .assert_extension_array_equal (result , expected )
994
+
995
+ # With dropna=False
996
+ result_with_na = s .unique (dropna = False )
997
+ expected_with_na = pd .array ([1 , 2 , pd .NA , 3 ], dtype = 'Int64' )
998
+ tm .assert_extension_array_equal (result_with_na , expected_with_na )
0 commit comments