@@ -1152,6 +1152,9 @@ def f():
1152
1152
1153
1153
def test_per_axis_per_level_getitem_doc_examples (self ):
1154
1154
1155
+ # test index maker
1156
+ idx = pd .IndexSlice
1157
+
1155
1158
# from indexing.rst / advanced
1156
1159
def mklbl (prefix ,n ):
1157
1160
return ["%s%s" % (prefix ,i ) for i in range (n )]
@@ -1170,11 +1173,15 @@ def mklbl(prefix,n):
1170
1173
expected = df .loc [[ tuple ([a ,b ,c ,d ]) for a ,b ,c ,d in df .index .values if (
1171
1174
a == 'A1' or a == 'A2' or a == 'A3' ) and (c == 'C1' or c == 'C3' )]]
1172
1175
assert_frame_equal (result , expected )
1176
+ result = df .loc [idx ['A1' :'A3' ,:,['C1' ,'C3' ]],:]
1177
+ assert_frame_equal (result , expected )
1173
1178
1174
1179
result = df .loc [(slice (None ),slice (None ), ['C1' ,'C3' ]),:]
1175
1180
expected = df .loc [[ tuple ([a ,b ,c ,d ]) for a ,b ,c ,d in df .index .values if (
1176
1181
c == 'C1' or c == 'C3' )]]
1177
1182
assert_frame_equal (result , expected )
1183
+ result = df .loc [idx [:,:,['C1' ,'C3' ]],:]
1184
+ assert_frame_equal (result , expected )
1178
1185
1179
1186
# not sorted
1180
1187
def f ():
@@ -1187,6 +1194,9 @@ def f():
1187
1194
1188
1195
def test_per_axis_per_level_setitem (self ):
1189
1196
1197
+ # test index maker
1198
+ idx = pd .IndexSlice
1199
+
1190
1200
# test multi-index slicing with per axis and per index controls
1191
1201
index = MultiIndex .from_tuples ([('A' ,1 ),('A' ,2 ),('A' ,3 ),('B' ,1 )],
1192
1202
names = ['one' ,'two' ])
@@ -1242,6 +1252,12 @@ def test_per_axis_per_level_setitem(self):
1242
1252
expected .iloc [[0 ,3 ],[1 ,3 ]] = 100
1243
1253
assert_frame_equal (df , expected )
1244
1254
1255
+ df = df_orig .copy ()
1256
+ df .loc [idx [:,1 ],idx [:,['foo' ]]] = 100
1257
+ expected = df_orig .copy ()
1258
+ expected .iloc [[0 ,3 ],[1 ,3 ]] = 100
1259
+ assert_frame_equal (df , expected )
1260
+
1245
1261
df = df_orig .copy ()
1246
1262
df .loc ['A' ,'a' ] = 100
1247
1263
expected = df_orig .copy ()
0 commit comments