@@ -4367,3 +4367,64 @@ def test_df_loc_dict() -> None:
43674367
43684368 df .iloc [0 ] = {"X" : 0 }
43694369 check (assert_type (df , pd .DataFrame ), pd .DataFrame )
4370+
4371+
4372+ def test_unstack () -> None :
4373+ """Test different types of argument for `fill_value` in DataFrame.unstack."""
4374+ df = pd .DataFrame (
4375+ [
4376+ ["a" , "b" , pd .Timestamp (2021 , 3 , 2 )],
4377+ ["a" , "a" , pd .Timestamp (2023 , 4 , 2 )],
4378+ ["b" , "b" , pd .Timestamp (2024 , 3 , 2 )],
4379+ ]
4380+ ).set_index ([0 , 1 ])
4381+ df_sr = pd .DataFrame (
4382+ [
4383+ ["a" , "b" , "abc" ],
4384+ ["a" , "a" , "def" ],
4385+ ["b" , "b" , "ghi" ],
4386+ ]
4387+ ).set_index ([0 , 1 ])
4388+ df_flt = pd .DataFrame (
4389+ [
4390+ ["a" , "b" , 1 ],
4391+ ["a" , "a" , 12 ],
4392+ ["b" , "b" , 14 ],
4393+ ]
4394+ ).set_index ([0 , 1 ])
4395+
4396+ check (assert_type (df .unstack (0 ), pd .DataFrame | pd .Series ), pd .DataFrame )
4397+ check (
4398+ assert_type (
4399+ df .unstack (1 , fill_value = pd .Timestamp (2023 , 4 , 5 )), pd .DataFrame | pd .Series
4400+ ),
4401+ pd .DataFrame ,
4402+ )
4403+ check (
4404+ assert_type (df_flt .unstack (1 , fill_value = 0.0 ), pd .DataFrame | pd .Series ),
4405+ pd .DataFrame ,
4406+ )
4407+ check (
4408+ assert_type (df_flt .unstack (1 , fill_value = 1 ), pd .DataFrame | pd .Series ),
4409+ pd .DataFrame ,
4410+ )
4411+ check (
4412+ assert_type (df_sr .unstack (1 , fill_value = "string" ), pd .DataFrame | pd .Series ),
4413+ pd .DataFrame ,
4414+ )
4415+ check (
4416+ assert_type (df .unstack (0 , sort = False ), pd .DataFrame | pd .Series ), pd .DataFrame
4417+ )
4418+ check (
4419+ assert_type (
4420+ df .unstack (1 , fill_value = pd .Timestamp (2023 , 4 , 5 ), sort = True ),
4421+ pd .DataFrame | pd .Series ,
4422+ ),
4423+ pd .DataFrame ,
4424+ )
4425+ check (
4426+ assert_type (
4427+ df_flt .unstack (1 , fill_value = 0.0 , sort = False ), pd .DataFrame | pd .Series
4428+ ),
4429+ pd .DataFrame ,
4430+ )
0 commit comments