From 11a7bd9c835905ea263d7a4d78cf60a22e690721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Diridollou?= Date: Sun, 27 Apr 2025 14:17:13 -0400 Subject: [PATCH 1/2] gh1203_loc_dict --- pandas-stubs/core/frame.pyi | 18 +++++++++++++++--- tests/test_frame.py | 10 ++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 259f6be4..b42f289a 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -176,7 +176,9 @@ class _iLocIndexerFrame(_iLocIndexer, Generic[_T]): | tuple[IndexType, IndexType] | tuple[int, IndexType] ), - value: Scalar | Series | DataFrame | np.ndarray | NAType | NaTType | None, + value: ( + Scalar | Series | DataFrame | np.ndarray | NAType | NaTType | dict | None + ), ) -> None: ... class _LocIndexerFrame(_LocIndexer, Generic[_T]): @@ -239,13 +241,23 @@ class _LocIndexerFrame(_LocIndexer, Generic[_T]): idx: ( MaskType | StrLike | _IndexSliceTuple | list[ScalarT] | IndexingInt | slice ), - value: Scalar | NAType | NaTType | ArrayLike | Series | DataFrame | list | None, + value: ( + Scalar + | NAType + | NaTType + | ArrayLike + | Series + | DataFrame + | list + | dict + | None + ), ) -> None: ... @overload def __setitem__( self, idx: tuple[_IndexSliceTuple, Hashable], - value: Scalar | NAType | NaTType | ArrayLike | Series | list | None, + value: Scalar | NAType | NaTType | ArrayLike | Series | list | dict | None, ) -> None: ... # With mypy 1.14.1 and python 3.12, the second overload needs a type-ignore statement diff --git a/tests/test_frame.py b/tests/test_frame.py index 47dbc646..7f8ba49f 100644 --- a/tests/test_frame.py +++ b/tests/test_frame.py @@ -4134,3 +4134,13 @@ def test_combine() -> None: ), pd.DataFrame, ) + + +def test_df_loc_dict() -> None: + """Test that we can set a dict to a df.loc result GH1203.""" + df = pd.DataFrame(columns=["X"]) + df.loc[0] = {"X": 0} + check(assert_type(df, pd.DataFrame), pd.DataFrame) + + df.iloc[0] = {"X": 0} + check(assert_type(df, pd.DataFrame), pd.DataFrame) From 9e810cccc3eccd2ca32fb8bd4972f37522775c66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Diridollou?= Date: Sun, 27 Apr 2025 19:54:40 -0400 Subject: [PATCH 2/2] GH1203 PR feedback --- pandas-stubs/core/frame.pyi | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index b42f289a..da3708eb 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -177,7 +177,14 @@ class _iLocIndexerFrame(_iLocIndexer, Generic[_T]): | tuple[int, IndexType] ), value: ( - Scalar | Series | DataFrame | np.ndarray | NAType | NaTType | dict | None + Scalar + | Series + | DataFrame + | np.ndarray + | NAType + | NaTType + | Mapping[Hashable, Scalar | NAType | NaTType] + | None ), ) -> None: ... @@ -249,7 +256,7 @@ class _LocIndexerFrame(_LocIndexer, Generic[_T]): | Series | DataFrame | list - | dict + | Mapping[Hashable, Scalar | NAType | NaTType] | None ), ) -> None: ...