@@ -112,3 +112,38 @@ def test_loc_getitem_frame(self):
112
112
# partial missing
113
113
with pytest .raises (KeyError , match = "^$" ):
114
114
df .loc [[10 , 4 ]]
115
+
116
+
117
+ class TestIntervalIndexInsideMultiIndex :
118
+ def test_mi_intervalindex_slicing_with_scalar (self ):
119
+ # GH#27456
120
+ idx = pd .MultiIndex .from_arrays (
121
+ [
122
+ pd .Index (["FC" , "FC" , "FC" , "FC" , "OWNER" , "OWNER" , "OWNER" , "OWNER" ]),
123
+ pd .Index (
124
+ ["RID1" , "RID1" , "RID2" , "RID2" , "RID1" , "RID1" , "RID2" , "RID2" ]
125
+ ),
126
+ pd .IntervalIndex .from_arrays (
127
+ [0 , 1 , 10 , 11 , 0 , 1 , 10 , 11 ], [1 , 2 , 11 , 12 , 1 , 2 , 11 , 12 ]
128
+ ),
129
+ ]
130
+ )
131
+
132
+ idx .names = ["Item" , "RID" , "MP" ]
133
+ df = pd .DataFrame ({"value" : [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]})
134
+ df .index = idx
135
+ query_df = pd .DataFrame (
136
+ {
137
+ "Item" : ["FC" , "OWNER" , "FC" , "OWNER" , "OWNER" ],
138
+ "RID" : ["RID1" , "RID1" , "RID1" , "RID2" , "RID2" ],
139
+ "MP" : [0.2 , 1.5 , 1.6 , 11.1 , 10.9 ],
140
+ }
141
+ )
142
+
143
+ query_df = query_df .sort_index ()
144
+
145
+ idx = pd .MultiIndex .from_arrays ([query_df .Item , query_df .RID , query_df .MP ])
146
+ query_df .index = idx
147
+ result = df .value .loc [query_df .index ]
148
+ expected = pd .Series ([1 , 6 , 2 , 8 , 7 ], index = idx , name = "value" )
149
+ tm .assert_series_equal (result , expected )
0 commit comments