@@ -171,7 +171,7 @@ def test_set_levels_labels_directly(idx):
171
171
172
172
173
173
def test_set_levels (idx ):
174
- # side note - you probably wouldn't want to use levels and labels
174
+ # side note - you probably wouldn't want to use levels and codes
175
175
# directly like this - but it is possible.
176
176
levels = idx .levels
177
177
new_levels = [[lev + 'a' for lev in level ] for level in levels ]
@@ -231,9 +231,15 @@ def test_set_levels(idx):
231
231
assert_matching (idx .levels , original_index .levels ,
232
232
check_dtype = True )
233
233
234
+ < << << << HEAD
234
235
with pytest .raises (ValueError , match = "^On" ):
235
236
idx .set_labels ([0 , 1 , 2 , 3 , 4 , 5 ], level = 0 ,
236
237
inplace = inplace )
238
+ == == == =
239
+ with tm .assert_raises_regex (ValueError , "^On" ):
240
+ idx .set_codes ([0 , 1 , 2 , 3 , 4 , 5 ], level = 0 ,
241
+ inplace = inplace )
242
+ >> >> >> > MultiIndex .set_labels - > set_codes
237
243
assert_matching (idx .labels , original_index .labels ,
238
244
check_dtype = True )
239
245
@@ -242,92 +248,118 @@ def test_set_levels(idx):
242
248
assert_matching (idx .levels , original_index .levels ,
243
249
check_dtype = True )
244
250
251
+ < << << << HEAD
245
252
with pytest .raises (TypeError , match = "^Labels" ):
246
253
idx .set_labels (1 , level = 0 , inplace = inplace )
254
+ == == == =
255
+ with tm .assert_raises_regex (TypeError , "^Codes" ):
256
+ idx .set_codes (1 , level = 0 , inplace = inplace )
257
+ >> >> >> > MultiIndex .set_labels - > set_codes
247
258
assert_matching (idx .labels , original_index .labels ,
248
259
check_dtype = True )
249
260
250
261
251
- def test_set_labels (idx ):
252
- # side note - you probably wouldn't want to use levels and labels
262
+ def test_set_codes (idx ):
263
+ # side note - you probably wouldn't want to use levels and codes
253
264
# directly like this - but it is possible.
254
- labels = idx .labels
255
- major_labels , minor_labels = labels
256
- major_labels = [(x + 1 ) % 3 for x in major_labels ]
257
- minor_labels = [(x + 1 ) % 1 for x in minor_labels ]
258
- new_labels = [major_labels , minor_labels ]
259
-
260
- # label changing [ w/o mutation]
261
- ind2 = idx .set_labels ( new_labels )
262
- assert_matching (ind2 .labels , new_labels )
263
- assert_matching (idx .labels , labels )
264
-
265
- # label changing [ w/ mutation]
265
+ codes = idx .labels
266
+ major_codes , minor_codes = codes
267
+ major_codes = [(x + 1 ) % 3 for x in major_codes ]
268
+ minor_codes = [(x + 1 ) % 1 for x in minor_codes ]
269
+ new_codes = [major_codes , minor_codes ]
270
+
271
+ # changing codes w/o mutation
272
+ ind2 = idx .set_codes ( new_codes )
273
+ assert_matching (ind2 .labels , new_codes )
274
+ assert_matching (idx .labels , codes )
275
+
276
+ # changing label w/ mutation
266
277
ind2 = idx .copy ()
267
- inplace_return = ind2 .set_labels ( new_labels , inplace = True )
278
+ inplace_return = ind2 .set_codes ( new_codes , inplace = True )
268
279
assert inplace_return is None
269
- assert_matching (ind2 .labels , new_labels )
280
+ assert_matching (ind2 .labels , new_codes )
270
281
271
- # label changing specific level [ w/o mutation]
272
- ind2 = idx .set_labels ( new_labels [0 ], level = 0 )
273
- assert_matching (ind2 .labels , [new_labels [0 ], labels [1 ]])
274
- assert_matching (idx .labels , labels )
282
+ # codes changing specific level w/o mutation
283
+ ind2 = idx .set_codes ( new_codes [0 ], level = 0 )
284
+ assert_matching (ind2 .labels , [new_codes [0 ], codes [1 ]])
285
+ assert_matching (idx .labels , codes )
275
286
276
- ind2 = idx .set_labels ( new_labels [1 ], level = 1 )
277
- assert_matching (ind2 .labels , [labels [0 ], new_labels [1 ]])
278
- assert_matching (idx .labels , labels )
287
+ ind2 = idx .set_codes ( new_codes [1 ], level = 1 )
288
+ assert_matching (ind2 .labels , [codes [0 ], new_codes [1 ]])
289
+ assert_matching (idx .labels , codes )
279
290
280
- # label changing multiple levels [ w/o mutation]
281
- ind2 = idx .set_labels ( new_labels , level = [0 , 1 ])
282
- assert_matching (ind2 .labels , new_labels )
283
- assert_matching (idx .labels , labels )
291
+ # codes changing multiple levels w/o mutation
292
+ ind2 = idx .set_codes ( new_codes , level = [0 , 1 ])
293
+ assert_matching (ind2 .labels , new_codes )
294
+ assert_matching (idx .labels , codes )
284
295
285
- # label changing specific level [ w/ mutation]
296
+ # label changing specific level w/ mutation
286
297
ind2 = idx .copy ()
287
- inplace_return = ind2 .set_labels ( new_labels [0 ], level = 0 , inplace = True )
298
+ inplace_return = ind2 .set_codes ( new_codes [0 ], level = 0 , inplace = True )
288
299
assert inplace_return is None
289
- assert_matching (ind2 .labels , [new_labels [0 ], labels [1 ]])
290
- assert_matching (idx .labels , labels )
300
+ assert_matching (ind2 .labels , [new_codes [0 ], codes [1 ]])
301
+ assert_matching (idx .labels , codes )
291
302
292
303
ind2 = idx .copy ()
293
- inplace_return = ind2 .set_labels ( new_labels [1 ], level = 1 , inplace = True )
304
+ inplace_return = ind2 .set_codes ( new_codes [1 ], level = 1 , inplace = True )
294
305
assert inplace_return is None
295
- assert_matching (ind2 .labels , [labels [0 ], new_labels [1 ]])
296
- assert_matching (idx .labels , labels )
306
+ assert_matching (ind2 .labels , [codes [0 ], new_codes [1 ]])
307
+ assert_matching (idx .labels , codes )
297
308
298
- # label changing multiple levels [w/ mutation]
309
+ # codes changing multiple levels [w/ mutation]
299
310
ind2 = idx .copy ()
300
- inplace_return = ind2 .set_labels ( new_labels , level = [0 , 1 ],
301
- inplace = True )
311
+ inplace_return = ind2 .set_codes ( new_codes , level = [0 , 1 ],
312
+ inplace = True )
302
313
assert inplace_return is None
303
- assert_matching (ind2 .labels , new_labels )
304
- assert_matching (idx .labels , labels )
314
+ assert_matching (ind2 .labels , new_codes )
315
+ assert_matching (idx .labels , codes )
305
316
306
317
# label changing for levels of different magnitude of categories
318
+ ind = pd .MultiIndex .from_tuples ([(0 , i ) for i in range (130 )])
319
+ new_codes = range (129 , - 1 , - 1 )
320
+ expected = pd .MultiIndex .from_tuples (
321
+ [(0 , i ) for i in new_codes ])
322
+
323
+ # [w/o mutation]
324
+ result = ind .set_codes (codes = new_codes , level = 1 )
325
+ assert result .equals (expected )
326
+
327
+ # [w/ mutation]
328
+ result = ind .copy ()
329
+ result .set_codes (codes = new_codes , level = 1 , inplace = True )
330
+ assert result .equals (expected )
331
+
332
+ with tm .assert_produces_warning (FutureWarning ):
333
+ ind .set_codes (labels = new_codes , level = 1 )
334
+
335
+
336
+ def test_set_labels_deprecated ():
307
337
ind = pd .MultiIndex .from_tuples ([(0 , i ) for i in range (130 )])
308
338
new_labels = range (129 , - 1 , - 1 )
309
339
expected = pd .MultiIndex .from_tuples (
310
340
[(0 , i ) for i in new_labels ])
311
341
312
342
# [w/o mutation]
313
- result = ind .set_labels (labels = new_labels , level = 1 )
343
+ with tm .assert_produces_warning (FutureWarning ):
344
+ result = ind .set_labels (labels = new_labels , level = 1 )
314
345
assert result .equals (expected )
315
346
316
347
# [w/ mutation]
317
348
result = ind .copy ()
318
- result .set_labels (labels = new_labels , level = 1 , inplace = True )
349
+ with tm .assert_produces_warning (FutureWarning ):
350
+ result .set_labels (labels = new_labels , level = 1 , inplace = True )
319
351
assert result .equals (expected )
320
352
321
353
322
- def test_set_levels_labels_names_bad_input (idx ):
323
- levels , labels = idx .levels , idx .labels
354
+ def test_set_levels_codes_names_bad_input (idx ):
355
+ levels , codes = idx .levels , idx .labels
324
356
names = idx .names
325
357
326
358
with pytest .raises (ValueError , match = 'Length of levels' ):
327
359
idx .set_levels ([levels [0 ]])
328
360
329
- with pytest . raises (ValueError , match = 'Length of labels ' ):
330
- idx .set_labels ([ labels [0 ]])
361
+ with tm . assert_raises_regex (ValueError , 'Length of codes ' ):
362
+ idx .set_codes ([ codes [0 ]])
331
363
332
364
with pytest .raises (ValueError , match = 'Length of names' ):
333
365
idx .set_names ([names [0 ]])
@@ -337,8 +369,13 @@ def test_set_levels_labels_names_bad_input(idx):
337
369
idx .set_levels (levels [0 ])
338
370
339
371
# shouldn't scalar data error, instead should demand list-like
372
+ < << << << HEAD
340
373
with pytest .raises (TypeError , match = 'list of lists-like' ):
341
374
idx .set_labels (labels [0 ])
375
+ == == == =
376
+ with tm .assert_raises_regex (TypeError , 'list of lists-like' ):
377
+ idx .set_codes (codes [0 ])
378
+ >> >> >> > MultiIndex .set_labels - > set_codes
342
379
343
380
# shouldn't scalar data error, instead should demand list-like
344
381
with pytest .raises (TypeError , match = 'list-like' ):
@@ -352,11 +389,19 @@ def test_set_levels_labels_names_bad_input(idx):
352
389
idx .set_levels (levels , level = 0 )
353
390
354
391
# should have equal lengths
392
+ < << << << HEAD
355
393
with pytest .raises (TypeError , match = 'list of lists-like' ):
356
394
idx .set_labels (labels [0 ], level = [0 , 1 ])
357
395
358
396
with pytest .raises (TypeError , match = 'list-like' ):
359
397
idx .set_labels (labels , level = 0 )
398
+ == == == =
399
+ with tm .assert_raises_regex (TypeError , 'list of lists-like' ):
400
+ idx .set_codes (codes [0 ], level = [0 , 1 ])
401
+
402
+ with tm .assert_raises_regex (TypeError , 'list-like' ):
403
+ idx .set_codes (codes , level = 0 )
404
+ >> >> >> > MultiIndex .set_labels - > set_codes
360
405
361
406
# should have equal lengths
362
407
with pytest .raises (ValueError , match = 'Length of names' ):
0 commit comments