@@ -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