Skip to content

Commit cc4a916

Browse files
authored
REF: prelims for single-path setitem_with_indexer (#37588)
1 parent 024270a commit cc4a916

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

pandas/core/indexing.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1592,7 +1592,11 @@ def _setitem_with_indexer(self, indexer, value):
15921592
return
15931593

15941594
# add a new item with the dtype setup
1595-
self.obj[key] = infer_fill_value(value)
1595+
if com.is_null_slice(indexer[0]):
1596+
# We are setting an entire column
1597+
self.obj[key] = value
1598+
else:
1599+
self.obj[key] = infer_fill_value(value)
15961600

15971601
new_indexer = convert_from_missing_indexer_tuple(
15981602
indexer, self.obj.axes
@@ -1641,6 +1645,8 @@ def _setitem_with_indexer_split_path(self, indexer, value):
16411645

16421646
if not isinstance(indexer, tuple):
16431647
indexer = _tuplify(self.ndim, indexer)
1648+
if len(indexer) > self.ndim:
1649+
raise IndexError("too many indices for array")
16441650

16451651
if isinstance(value, ABCSeries):
16461652
value = self._align_series(indexer, value)

pandas/tests/indexing/test_indexing.py

-5
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,6 @@ def test_setitem_ndarray_3d(self, index, obj, idxr, idxr_id):
116116
idxr = idxr(obj)
117117
nd3 = np.random.randint(5, size=(2, 2, 2))
118118

119-
if (len(index) == 0) and (idxr_id == "iloc") and isinstance(obj, pd.DataFrame):
120-
# gh-32896
121-
pytest.skip("This is currently failing. There's an xfailed test below.")
122-
123119
if idxr_id == "iloc":
124120
err = ValueError
125121
msg = f"Cannot set values with ndim > {obj.ndim}"
@@ -140,7 +136,6 @@ def test_setitem_ndarray_3d(self, index, obj, idxr, idxr_id):
140136
idxr[nd3] = 0
141137

142138
def test_setitem_ndarray_3d_does_not_fail_for_iloc_empty_dataframe(self):
143-
# when fixing this, please remove the pytest.skip in test_setitem_ndarray_3d
144139
i = Index([])
145140
obj = DataFrame(np.random.randn(len(i), len(i)), index=i, columns=i)
146141
nd3 = np.random.randint(5, size=(2, 2, 2))

0 commit comments

Comments
 (0)