Skip to content

Commit 723a555

Browse files
committed
BUG: Fix keyerror bug when indexing multiindex columns with NaT values
1 parent 6526829 commit 723a555

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

pandas/core/indexes/multi.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4084,11 +4084,10 @@ def insert(self, loc: int, item) -> MultiIndex:
40844084
# have to insert into level
40854085
# must insert at end otherwise you have to recompute all the
40864086
# other codes
4087-
if isna(k): # GH 59003
4087+
lev_loc = len(level)
4088+
level = level.insert(lev_loc, k)
4089+
if isna(level[lev_loc]): # GH 59003, 60388
40884090
lev_loc = -1
4089-
else:
4090-
lev_loc = len(level)
4091-
level = level.insert(lev_loc, k)
40924091
else:
40934092
lev_loc = level.get_loc(k)
40944093

pandas/tests/frame/methods/test_reset_index.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,27 @@ def test_reset_index_datetime3(self, tz_naive_fixture):
544544
result = df.reset_index()
545545
tm.assert_frame_equal(result, expected)
546546

547+
def test_reset_index_multiindex_dt_with_nan(self):
548+
# GH#60388
549+
df = DataFrame(
550+
{
551+
"Date": [
552+
datetime(2024, 11, 1),
553+
datetime(2024, 11, 1),
554+
datetime(2024, 11, 2),
555+
datetime(2024, 11, 2),
556+
],
557+
"sub": ["a", "b", "c", "d"],
558+
"value1": [1, 2, 3, 4],
559+
"value2": [5, 6, 7, 8],
560+
}
561+
)
562+
df = df.pivot(index="sub", columns="Date", values=["value1", "value2"])
563+
df = df.reset_index()
564+
result = df[df.columns[0]]
565+
expected = Series(["a", "b", "c", "d"], name=("sub", np.nan))
566+
tm.assert_series_equal(result, expected)
567+
547568
def test_reset_index_period(self):
548569
# GH#7746
549570
idx = MultiIndex.from_product(

0 commit comments

Comments
 (0)