Skip to content

Commit d0268e7

Browse files
authored
BUG: reindex using wrong fill value when indexing cols and index for uint dtypes (#48185)
1 parent bfdb524 commit d0268e7

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

doc/source/whatsnew/v1.6.0.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ Interval
151151

152152
Indexing
153153
^^^^^^^^
154-
-
154+
- Bug in :meth:`DataFrame.reindex` filling with wrong values when indexing columns and index for ``uint`` dtypes (:issue:`48184`)
155155
-
156156

157157
Missing

pandas/core/array_algos/take.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -546,9 +546,13 @@ def _take_2d_multi_object(
546546
out[:, col_mask] = fill_value
547547
for i in range(len(row_idx)):
548548
u_ = row_idx[i]
549-
for j in range(len(col_idx)):
550-
v = col_idx[j]
551-
out[i, j] = arr[u_, v]
549+
550+
if u_ != -1:
551+
for j in range(len(col_idx)):
552+
v = col_idx[j]
553+
554+
if v != -1:
555+
out[i, j] = arr[u_, v]
552556

553557

554558
def _take_preprocess_indexer_and_fill_value(

pandas/tests/frame/methods/test_reindex.py

+10
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,16 @@ def test_reindex_fill_value(self):
772772
expected = df.reindex(range(15)).fillna(0)
773773
tm.assert_frame_equal(result, expected)
774774

775+
def test_reindex_uint_dtypes_fill_value(self, any_unsigned_int_numpy_dtype):
776+
# GH#48184
777+
df = DataFrame({"a": [1, 2], "b": [1, 2]}, dtype=any_unsigned_int_numpy_dtype)
778+
result = df.reindex(columns=list("abcd"), index=[0, 1, 2, 3], fill_value=10)
779+
expected = DataFrame(
780+
{"a": [1, 2, 10, 10], "b": [1, 2, 10, 10], "c": 10, "d": 10},
781+
dtype=any_unsigned_int_numpy_dtype,
782+
)
783+
tm.assert_frame_equal(result, expected)
784+
775785
def test_reindex_dups(self):
776786

777787
# GH4746, reindex on duplicate index error messages

0 commit comments

Comments
 (0)