Skip to content

Commit 5fd69f7

Browse files
GH1248/GH1249 DataFrame.assign and MultiIndex.from_product Series/Index
1 parent 320cf41 commit 5fd69f7

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

pandas-stubs/_typing.pyi

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,10 @@ TimeZones: TypeAlias = str | tzinfo | None | int
10131013

10141014
# Evaluates to a DataFrame column in DataFrame.assign context.
10151015
IntoColumn: TypeAlias = (
1016-
AnyArrayLike | Scalar | Callable[[DataFrame], AnyArrayLike | Scalar] | None
1016+
AnyArrayLike
1017+
| Scalar
1018+
| Callable[[DataFrame], AnyArrayLike | Scalar | list[Scalar] | range]
1019+
| None
10171020
)
10181021

10191022
DatetimeLike: TypeAlias = datetime.datetime | np.datetime64 | Timestamp

pandas-stubs/core/indexes/multi.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class MultiIndex(Index[Any]):
5555
@classmethod
5656
def from_product(
5757
cls,
58-
iterables: Sequence[SequenceNotStr[Hashable]],
58+
iterables: Sequence[SequenceNotStr[Hashable] | pd.Series | pd.Index],
5959
sortorder: int | None = ...,
6060
names: SequenceNotStr[Hashable] = ...,
6161
) -> Self: ...

tests/test_frame.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,22 @@ def test_types_head_tail() -> None:
305305

306306
def test_types_assign() -> None:
307307
df = pd.DataFrame(data={"col1": [1, 2], "col2": [3, 4]})
308-
df.assign(col3=lambda frame: frame.sum(axis=1))
308+
309+
check(
310+
assert_type(df.assign(col3=lambda frame: frame.sum(axis=1)), pd.DataFrame),
311+
pd.DataFrame,
312+
)
309313
df["col3"] = df.sum(axis=1)
310314

315+
df = pd.DataFrame({"a": [1, 2, 3]})
316+
check(
317+
assert_type(
318+
df.assign(b=lambda df: range(len(df)), c=lambda df: [10, 20, 30]),
319+
pd.DataFrame,
320+
),
321+
pd.DataFrame,
322+
)
323+
311324

312325
def test_assign() -> None:
313326
df = pd.DataFrame({"a": [1, 2, 3], 1: [4, 5, 6]})

tests/test_indexes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ def test_index_astype() -> None:
6161
pd.DataFrame,
6262
)
6363

64+
df = pd.DataFrame({"a": [1, 2, 3]})
65+
mi = pd.MultiIndex.from_product([["x", "y"], df.columns])
66+
mi = pd.MultiIndex.from_product([["x", "y"], pd.Series([1, 2])])
67+
6468

6569
def test_multiindex_get_level_values() -> None:
6670
mi = pd.MultiIndex.from_product([["a", "b"], ["c", "d"]], names=["ab", "cd"])

0 commit comments

Comments
 (0)