>> ser 0 2016-01-01 5 2016-01-02 4...">

BUG/API: should MultiIndex with leading integer level fallback to positional? · Issue #33355 · pandas-dev/pandas (original) (raw)


idx = pd.Index(range(3))
dti = pd.date_range("2016-01-01", periods=2)
mi = pd.MultiIndex.from_product([idx, dti])

ser = pd.Series(range(len(mi))[::-1], index=mi)

>>> ser
0  2016-01-01    5
   2016-01-02    4
1  2016-01-01    3
   2016-01-02    2
2  2016-01-01    1
   2016-01-02    0
dtype: int64
>>> ser[3]
2

My intuition is that ser[3] should behave like indexing on just the first level of the MultIIndex:

ser2 = ser.droplevel(1)

>>> ser2
0    5
0    4
1    3
1    2
2    1
2    0
dtype: int64
>>> ser2[3]
KeyError: 3

Should we avoid the fallback-to-positional behavior in this case?