Skip to content

Commit 8794b35

Browse files
author
Stephen Randall
committed
update types, add tests
1 parent 5532e9e commit 8794b35

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

pandas-stubs/core/frame.pyi

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1317,18 +1317,18 @@ class DataFrame(NDFrame, OpsMixin, _GetItemHack):
13171317
) -> Self: ...
13181318
@overload
13191319
def stack(
1320-
self, level: Level | list[Level] = ..., dropna: _bool = ..., sort: _bool = ...
1320+
self, level: IndexLabel = ..., dropna: _bool = ..., sort: _bool = ...
13211321
) -> Self | Series: ...
13221322
@overload
13231323
def stack(
1324-
self, level: Level | list[Level] = ..., future_stack: _bool = ...
1324+
self, level: IndexLabel = ..., future_stack: _bool = ...
13251325
) -> Self | Series: ...
13261326
def explode(
13271327
self, column: Sequence[Hashable], ignore_index: _bool = ...
13281328
) -> Self: ...
13291329
def unstack(
13301330
self,
1331-
level: Level = ...,
1331+
level: IndexLabel = ...,
13321332
fill_value: Scalar | None = ...,
13331333
sort: _bool = ...,
13341334
) -> Self | Series: ...

pandas-stubs/core/series.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ class Series(IndexOpsMixin[S1], NDFrame):
934934
def explode(self) -> Series[S1]: ...
935935
def unstack(
936936
self,
937-
level: Level = ...,
937+
level: IndexLabel = ...,
938938
fill_value: int | _str | dict | None = ...,
939939
) -> DataFrame: ...
940940
@overload

tests/test_frame.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3124,6 +3124,12 @@ def test_frame_stack() -> None:
31243124
assert_type(df_multi_level_cols2.stack(0), Union[pd.DataFrame, pd.Series]),
31253125
pd.DataFrame,
31263126
)
3127+
check(
3128+
assert_type(
3129+
df_multi_level_cols2.stack([0]), Union[pd.DataFrame, pd.Series]
3130+
),
3131+
pd.DataFrame,
3132+
)
31273133
check(
31283134
assert_type(
31293135
df_multi_level_cols2.stack([0, 1]),
@@ -4461,6 +4467,7 @@ def test_unstack() -> None:
44614467
).set_index([0, 1])
44624468

44634469
check(assert_type(df.unstack(0), pd.DataFrame | pd.Series), pd.DataFrame)
4470+
check(assert_type(df.unstack([0]), pd.DataFrame | pd.Series), pd.DataFrame)
44644471
check(
44654472
assert_type(
44664473
df.unstack(1, fill_value=pd.Timestamp(2023, 4, 5)), pd.DataFrame | pd.Series

tests/test_series.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3902,11 +3902,22 @@ def test_series_items() -> None:
39023902

39033903

39043904
def test_cumsum_timedelta() -> None:
3905-
39063905
s = pd.Series(pd.to_timedelta([1, 2, 3], "h"))
39073906
check(assert_type(s.cumsum(), "TimedeltaSeries"), pd.Series, pd.Timedelta)
39083907
check(
39093908
assert_type(pd.Timestamp(0) + s.cumsum(), "TimestampSeries"),
39103909
pd.Series,
39113910
pd.Timestamp,
39123911
)
3912+
3913+
3914+
def test_series_unstack() -> None:
3915+
df = pd.DataFrame([[1, 3, 5], [2, 4, 6]])
3916+
s = df.transpose().stack([*range(df.index.nlevels)])
3917+
check(
3918+
assert_type(
3919+
s.unstack([*range(s.index.nlevels // 2)]),
3920+
Union[pd.Series, pd.DataFrame],
3921+
),
3922+
pd.DataFrame,
3923+
)

0 commit comments

Comments
 (0)