Skip to content

Commit 11b006c

Browse files
try fix
1 parent 18b2a22 commit 11b006c

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

pandas/core/internals/managers.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -573,11 +573,18 @@ def setitem(self, indexer, value) -> Self:
573573
0, blk_loc, values
574574
)
575575
# first block equals values we are setting to -> set to all columns
576-
col_indexer = slice(None)
576+
if len(blk_loc) > 1:
577+
col_indexer = slice(None)
578+
else:
579+
col_indexer = np.arange(len(blk_loc))
577580
row_indexer = indexer[0]
578581
if isinstance(row_indexer, np.ndarray) and row_indexer.ndim == 2:
579582
# numpy cannot handle a 2d indexer in combo with a slice
580583
row_indexer = np.squeeze(row_indexer, axis=1)
584+
if len(row_indexer) == 0:
585+
# numpy does not like empty indexer combined with slice
586+
# and we are setting nothing anyway
587+
return self
581588
self.blocks[0].setitem((row_indexer, col_indexer), value)
582589
return self
583590
# No need to split if we either set all columns or on a single block

pandas/tests/frame/methods/test_update.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,15 @@ def test_update_with_different_dtype(self):
155155
with pytest.raises(TypeError, match="Invalid value"):
156156
df.update({"c": Series(["foo"], index=[0])})
157157

158-
def test_update_modify_view(self, using_infer_string):
158+
@pytest.mark.parametrize("dtype", ["str", object])
159+
def test_update_modify_view(self, dtype):
159160
# GH#47188
160-
df = DataFrame({"A": ["1", np.nan], "B": ["100", np.nan]})
161-
df2 = DataFrame({"A": ["a", "x"], "B": ["100", "200"]})
161+
df = DataFrame({"A": ["1", np.nan], "B": ["100", np.nan]}, dtype=dtype)
162+
df2 = DataFrame({"A": ["a", "x"], "B": ["100", "200"]}, dtype=dtype)
162163
df2_orig = df2.copy()
163164
result_view = df2[:]
164165
df2.update(df)
165-
expected = DataFrame({"A": ["1", "x"], "B": ["100", "200"]})
166+
expected = DataFrame({"A": ["1", "x"], "B": ["100", "200"]}, dtype=dtype)
166167
tm.assert_frame_equal(df2, expected)
167168
tm.assert_frame_equal(result_view, df2_orig)
168169

pandas/tests/indexing/test_loc.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3339,11 +3339,12 @@ def test_loc_index_alignment_for_series(self):
33393339
expected = DataFrame({"a": [999, 200], "b": [3, 4]})
33403340
tm.assert_frame_equal(expected, df)
33413341

3342-
def test_loc_reindexing_of_empty_index(self):
3342+
@pytest.mark.parametrize("dtype", ["str", object])
3343+
def test_loc_reindexing_of_empty_index(self, dtype):
33433344
# GH 57735
3344-
df = DataFrame(index=[1, 1, 2, 2], data=["1", "1", "2", "2"])
3345+
df = DataFrame(index=[1, 1, 2, 2], data=["1", "1", "2", "2"], dtype=dtype)
33453346
df.loc[Series([False] * 4, index=df.index, name=0), 0] = df[0]
3346-
expected = DataFrame(index=[1, 1, 2, 2], data=["1", "1", "2", "2"])
3347+
expected = DataFrame(index=[1, 1, 2, 2], data=["1", "1", "2", "2"], dtype=dtype)
33473348
tm.assert_frame_equal(df, expected)
33483349

33493350
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)