Skip to content

Commit e9d90b4

Browse files
authored
Fix regression on datetime in MultiIndex (#35140)
1 parent d9b56a1 commit e9d90b4

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

pandas/core/indexing.py

+4
Original file line numberDiff line numberDiff line change
@@ -1165,6 +1165,10 @@ def _convert_to_indexer(self, key, axis: int, is_setter: bool = False):
11651165
if len(key) == labels.nlevels:
11661166
return {"key": key}
11671167
raise
1168+
except InvalidIndexError:
1169+
# GH35015, using datetime as column indices raises exception
1170+
if not isinstance(labels, ABCMultiIndex):
1171+
raise
11681172
except TypeError:
11691173
pass
11701174
except ValueError:

pandas/tests/indexing/multiindex/test_datetime.py

+29-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22

33
import numpy as np
44

5-
from pandas import Index, Period, Series, period_range
5+
from pandas import (
6+
DataFrame,
7+
Index,
8+
MultiIndex,
9+
Period,
10+
Series,
11+
period_range,
12+
to_datetime,
13+
)
14+
import pandas._testing as tm
615

716

817
def test_multiindex_period_datetime():
@@ -20,3 +29,22 @@ def test_multiindex_period_datetime():
2029
# try datetime as index
2130
result = s.loc["a", datetime(2012, 1, 1)]
2231
assert result == expected
32+
33+
34+
def test_multiindex_datetime_columns():
35+
# GH35015, using datetime as column indices raises exception
36+
37+
mi = MultiIndex.from_tuples(
38+
[(to_datetime("02/29/2020"), to_datetime("03/01/2020"))], names=["a", "b"]
39+
)
40+
41+
df = DataFrame([], columns=mi)
42+
43+
expected_df = DataFrame(
44+
[],
45+
columns=MultiIndex.from_arrays(
46+
[[to_datetime("02/29/2020")], [to_datetime("03/01/2020")]], names=["a", "b"]
47+
),
48+
)
49+
50+
tm.assert_frame_equal(df, expected_df)

0 commit comments

Comments
 (0)