Skip to content

Commit ec745ff

Browse files
GH1203 Pass a dict to setter for DataFrame.loc/iloc (#1204)
* gh1203_loc_dict * GH1203 PR feedback
1 parent de6b744 commit ec745ff

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

‎pandas-stubs/core/frame.pyi

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,16 @@ class _iLocIndexerFrame(_iLocIndexer, Generic[_T]):
176176
| tuple[IndexType, IndexType]
177177
| tuple[int, IndexType]
178178
),
179-
value: Scalar | Series | DataFrame | np.ndarray | NAType | NaTType | None,
179+
value: (
180+
Scalar
181+
| Series
182+
| DataFrame
183+
| np.ndarray
184+
| NAType
185+
| NaTType
186+
| Mapping[Hashable, Scalar | NAType | NaTType]
187+
| None
188+
),
180189
) -> None: ...
181190

182191
class _LocIndexerFrame(_LocIndexer, Generic[_T]):
@@ -239,13 +248,23 @@ class _LocIndexerFrame(_LocIndexer, Generic[_T]):
239248
idx: (
240249
MaskType | StrLike | _IndexSliceTuple | list[ScalarT] | IndexingInt | slice
241250
),
242-
value: Scalar | NAType | NaTType | ArrayLike | Series | DataFrame | list | None,
251+
value: (
252+
Scalar
253+
| NAType
254+
| NaTType
255+
| ArrayLike
256+
| Series
257+
| DataFrame
258+
| list
259+
| Mapping[Hashable, Scalar | NAType | NaTType]
260+
| None
261+
),
243262
) -> None: ...
244263
@overload
245264
def __setitem__(
246265
self,
247266
idx: tuple[_IndexSliceTuple, Hashable],
248-
value: Scalar | NAType | NaTType | ArrayLike | Series | list | None,
267+
value: Scalar | NAType | NaTType | ArrayLike | Series | list | dict | None,
249268
) -> None: ...
250269

251270
# With mypy 1.14.1 and python 3.12, the second overload needs a type-ignore statement

‎tests/test_frame.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4134,3 +4134,13 @@ def test_combine() -> None:
41344134
),
41354135
pd.DataFrame,
41364136
)
4137+
4138+
4139+
def test_df_loc_dict() -> None:
4140+
"""Test that we can set a dict to a df.loc result GH1203."""
4141+
df = pd.DataFrame(columns=["X"])
4142+
df.loc[0] = {"X": 0}
4143+
check(assert_type(df, pd.DataFrame), pd.DataFrame)
4144+
4145+
df.iloc[0] = {"X": 0}
4146+
check(assert_type(df, pd.DataFrame), pd.DataFrame)

0 commit comments

Comments
 (0)