Skip to content

Commit a860d0f

Browse files
GH1214 Improve typehinting for DataFrame.unstack
1 parent cbb6723 commit a860d0f

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1300,7 +1300,8 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
13001300
def unstack(
13011301
self,
13021302
level: Level = ...,
1303-
fill_value: int | _str | dict | None = ...,
1303+
fill_value: Scalar | None = ...,
1304+
sort: _bool = ...,
13041305
) -> Self | Series: ...
13051306
def melt(
13061307
self,

tests/test_frame.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4339,3 +4339,49 @@ def test_df_loc_dict() -> None:
43394339

43404340
df.iloc[0] = {"X": 0}
43414341
check(assert_type(df, pd.DataFrame), pd.DataFrame)
4342+
4343+
4344+
def test_unstack() -> None:
4345+
"""Test different types of argument for `fill_value` in DataFrame.unstack."""
4346+
df = pd.DataFrame(
4347+
[
4348+
["a", "b", pd.Timestamp(2021, 3, 2)],
4349+
["a", "a", pd.Timestamp(2023, 4, 2)],
4350+
["b", "b", pd.Timestamp(2024, 3, 2)],
4351+
]
4352+
).set_index([0, 1])
4353+
4354+
check(assert_type(df.unstack(0), pd.DataFrame | pd.Series), pd.DataFrame)
4355+
check(
4356+
assert_type(
4357+
df.unstack(1, fill_value=pd.Timestamp(2023, 4, 5)), pd.DataFrame | pd.Series
4358+
),
4359+
pd.DataFrame,
4360+
)
4361+
check(
4362+
assert_type(df.unstack(1, fill_value=0.0), pd.DataFrame | pd.Series),
4363+
pd.DataFrame,
4364+
)
4365+
check(
4366+
assert_type(df.unstack(1, fill_value=1), pd.DataFrame | pd.Series), pd.DataFrame
4367+
)
4368+
check(
4369+
assert_type(df.unstack(1, fill_value="string"), pd.DataFrame | pd.Series),
4370+
pd.DataFrame,
4371+
)
4372+
check(
4373+
assert_type(df.unstack(0, sort=False), pd.DataFrame | pd.Series), pd.DataFrame
4374+
)
4375+
check(
4376+
assert_type(
4377+
df.unstack(1, fill_value=pd.Timestamp(2023, 4, 5), sort=True),
4378+
pd.DataFrame | pd.Series,
4379+
),
4380+
pd.DataFrame,
4381+
)
4382+
check(
4383+
assert_type(
4384+
df.unstack(1, fill_value=0.0, sort=False), pd.DataFrame | pd.Series
4385+
),
4386+
pd.DataFrame,
4387+
)

0 commit comments

Comments
 (0)