diff --git a/pandas-stubs/core/frame.pyi b/pandas-stubs/core/frame.pyi index 259f6be4..da3708eb 100644 --- a/pandas-stubs/core/frame.pyi +++ b/pandas-stubs/core/frame.pyi @@ -176,7 +176,16 @@ 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 + | Mapping[Hashable, Scalar | NAType | NaTType] + | None + ), ) -> None: ... class _LocIndexerFrame(_LocIndexer, Generic[_T]): @@ -239,13 +248,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 + | Mapping[Hashable, Scalar | NAType | NaTType] + | 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)