Skip to content

Commit 2c7393b

Browse files
authored
BUG: NumericIndex.append retain dtype (#43938)
1 parent c021d33 commit 2c7393b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

pandas/core/indexes/base.py

+5
Original file line numberDiff line numberDiff line change
@@ -4897,6 +4897,11 @@ def _concat(self, to_concat: list[Index], name: Hashable) -> Index:
48974897
to_concat_vals = [x._values for x in to_concat]
48984898

48994899
result = concat_compat(to_concat_vals)
4900+
4901+
is_numeric = result.dtype.kind in ["i", "u", "f"]
4902+
if self._is_backward_compat_public_numeric_index and is_numeric:
4903+
return type(self)._simple_new(result, name=name)
4904+
49004905
return Index._with_infer(result, name=name)
49014906

49024907
@final

pandas/tests/indexes/common.py

+13
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,19 @@ def test_index_groupby(self, simple_index):
760760
expected = {ex_keys[0]: idx[[0, 4]], ex_keys[1]: idx[[1, 3]]}
761761
tm.assert_dict_equal(idx.groupby(to_groupby), expected)
762762

763+
def test_append_preserves_dtype(self, simple_index):
764+
# In particular NumericIndex with dtype float32
765+
index = simple_index
766+
N = len(index)
767+
768+
result = index.append(index)
769+
assert result.dtype == index.dtype
770+
tm.assert_index_equal(result[:N], index, check_exact=True)
771+
tm.assert_index_equal(result[N:], index, check_exact=True)
772+
773+
alt = index.take(list(range(N)) * 2)
774+
tm.assert_index_equal(result, alt, check_exact=True)
775+
763776

764777
class NumericBase(Base):
765778
"""

0 commit comments

Comments
 (0)