Skip to content

Commit 142c640

Browse files
revert previous changes
1 parent 9b28888 commit 142c640

File tree

3 files changed

+2
-22
lines changed

3 files changed

+2
-22
lines changed

doc/source/whatsnew/v3.0.0.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,6 @@ Interval
11321132

11331133
Indexing
11341134
^^^^^^^^
1135-
- Bug in :func:`pandas.concat` incorrectly constructing the :class:`MultiIndex` when an inner level contained :obj:`pandas.NA` with :class:`pandas.Int64Dtype`, causing a :exc:`KeyError` on lookup (:issue:`62903`)
11361135
- Bug in :meth:`DataFrame.__getitem__` returning modified columns when called with ``slice`` in Python 3.12 (:issue:`57500`)
11371136
- Bug in :meth:`DataFrame.__getitem__` when slicing a :class:`DataFrame` with many rows raised an ``OverflowError`` (:issue:`59531`)
11381137
- Bug in :meth:`DataFrame.__setitem__` on an empty :class:`DataFrame` with a tuple corrupting the frame (:issue:`54385`)

pandas/core/reshape/concat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -990,9 +990,8 @@ def _make_concat_multiindex(indexes, keys, levels=None, names=None) -> MultiInde
990990
new_levels.extend(new_index.levels)
991991
new_codes.extend(np.tile(lab, kpieces) for lab in new_index.codes)
992992
else:
993-
levels_for_index = new_index.unique().dropna()
994-
new_levels.append(levels_for_index)
995-
single_codes = levels_for_index.get_indexer(new_index)
993+
new_levels.append(new_index.unique())
994+
single_codes = new_index.unique().get_indexer(new_index)
996995
new_codes.append(np.tile(single_codes, kpieces))
997996

998997
if len(new_names) < len(new_levels):

pandas/tests/indexes/multi/test_constructors.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -344,24 +344,6 @@ def test_from_arrays_respects_none_names():
344344
tm.assert_index_equal(result, expected)
345345

346346

347-
def test_concat_int64dtype_na_multiindex_lookup():
348-
levels1 = ["a", "b"]
349-
levels2 = Series([1, 2, pd.NA], dtype=pd.Int64Dtype())
350-
index1 = MultiIndex.from_product([levels1, levels2], names=["one", "two"])
351-
series1 = Series([f"{i1}-{i2}" for i1, i2 in index1], index=index1)
352-
series2 = pd.concat(
353-
[series1.loc[i1] for i1 in levels1], keys=levels1, names=["one"]
354-
)
355-
lookup_key = ("a", pd.NA)
356-
result = series2.at[lookup_key]
357-
assert result == "a-<NA>"
358-
level_two = series2.index.levels[1]
359-
codes_two = series2.index.codes[1]
360-
assert level_two.hasnans is False
361-
assert codes_two[2] == -1
362-
assert codes_two[5] == -1
363-
364-
365347
# ----------------------------------------------------------------------------
366348
# from_tuples
367349
# ----------------------------------------------------------------------------

0 commit comments

Comments
 (0)