@@ -4367,3 +4367,64 @@ def test_df_loc_dict() -> None:
4367
4367
4368
4368
df .iloc [0 ] = {"X" : 0 }
4369
4369
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