@@ -1521,27 +1521,27 @@ def droplevel(self, level=0):
1521
1521
# The two checks above guarantee that here self is a MultiIndex
1522
1522
1523
1523
new_levels = list (self .levels )
1524
- new_labels = list (self .labels )
1524
+ new_codes = list (self .codes )
1525
1525
new_names = list (self .names )
1526
1526
1527
1527
for i in levnums :
1528
1528
new_levels .pop (i )
1529
- new_labels .pop (i )
1529
+ new_codes .pop (i )
1530
1530
new_names .pop (i )
1531
1531
1532
1532
if len (new_levels ) == 1 :
1533
1533
1534
1534
# set nan if needed
1535
- mask = new_labels [0 ] == - 1
1536
- result = new_levels [0 ].take (new_labels [0 ])
1535
+ mask = new_codes [0 ] == - 1
1536
+ result = new_levels [0 ].take (new_codes [0 ])
1537
1537
if mask .any ():
1538
1538
result = result .putmask (mask , np .nan )
1539
1539
1540
1540
result .name = new_names [0 ]
1541
1541
return result
1542
1542
else :
1543
1543
from .multi import MultiIndex
1544
- return MultiIndex (levels = new_levels , labels = new_labels ,
1544
+ return MultiIndex (levels = new_levels , codes = new_codes ,
1545
1545
names = new_names , verify_integrity = False )
1546
1546
1547
1547
_index_shared_docs ['_get_grouper_for_level' ] = """
@@ -3299,14 +3299,14 @@ def _join_multi(self, other, how, return_indexers=True):
3299
3299
# common levels, ldrop_names, rdrop_names
3300
3300
dropped_names = ldrop_names + rdrop_names
3301
3301
3302
- levels , labels , names = (
3302
+ levels , codes , names = (
3303
3303
_restore_dropped_levels_multijoin (self , other ,
3304
3304
dropped_names ,
3305
3305
join_idx ,
3306
3306
lidx , ridx ))
3307
3307
3308
3308
# Re-create the multi-index
3309
- multi_join_idx = MultiIndex (levels = levels , labels = labels ,
3309
+ multi_join_idx = MultiIndex (levels = levels , codes = codes ,
3310
3310
names = names , verify_integrity = False )
3311
3311
3312
3312
multi_join_idx = multi_join_idx .remove_unused_levels ()
@@ -3417,63 +3417,63 @@ def _get_leaf_sorter(labels):
3417
3417
left_indexer = None
3418
3418
join_index = left
3419
3419
else : # sort the leaves
3420
- left_indexer = _get_leaf_sorter (left .labels [:level + 1 ])
3420
+ left_indexer = _get_leaf_sorter (left .codes [:level + 1 ])
3421
3421
join_index = left [left_indexer ]
3422
3422
3423
3423
else :
3424
3424
left_lev_indexer = ensure_int64 (left_lev_indexer )
3425
3425
rev_indexer = lib .get_reverse_indexer (left_lev_indexer ,
3426
3426
len (old_level ))
3427
3427
3428
- new_lev_labels = algos .take_nd (rev_indexer , left .labels [level ],
3429
- allow_fill = False )
3428
+ new_lev_codes = algos .take_nd (rev_indexer , left .codes [level ],
3429
+ allow_fill = False )
3430
3430
3431
- new_labels = list (left .labels )
3432
- new_labels [level ] = new_lev_labels
3431
+ new_codes = list (left .codes )
3432
+ new_codes [level ] = new_lev_codes
3433
3433
3434
3434
new_levels = list (left .levels )
3435
3435
new_levels [level ] = new_level
3436
3436
3437
3437
if keep_order : # just drop missing values. o.w. keep order
3438
3438
left_indexer = np .arange (len (left ), dtype = np .intp )
3439
- mask = new_lev_labels != - 1
3439
+ mask = new_lev_codes != - 1
3440
3440
if not mask .all ():
3441
- new_labels = [lab [mask ] for lab in new_labels ]
3441
+ new_codes = [lab [mask ] for lab in new_codes ]
3442
3442
left_indexer = left_indexer [mask ]
3443
3443
3444
3444
else : # tie out the order with other
3445
3445
if level == 0 : # outer most level, take the fast route
3446
- ngroups = 1 + new_lev_labels .max ()
3446
+ ngroups = 1 + new_lev_codes .max ()
3447
3447
left_indexer , counts = libalgos .groupsort_indexer (
3448
- new_lev_labels , ngroups )
3448
+ new_lev_codes , ngroups )
3449
3449
3450
3450
# missing values are placed first; drop them!
3451
3451
left_indexer = left_indexer [counts [0 ]:]
3452
- new_labels = [lab [left_indexer ] for lab in new_labels ]
3452
+ new_codes = [lab [left_indexer ] for lab in new_codes ]
3453
3453
3454
3454
else : # sort the leaves
3455
- mask = new_lev_labels != - 1
3455
+ mask = new_lev_codes != - 1
3456
3456
mask_all = mask .all ()
3457
3457
if not mask_all :
3458
- new_labels = [lab [mask ] for lab in new_labels ]
3458
+ new_codes = [lab [mask ] for lab in new_codes ]
3459
3459
3460
- left_indexer = _get_leaf_sorter (new_labels [:level + 1 ])
3461
- new_labels = [lab [left_indexer ] for lab in new_labels ]
3460
+ left_indexer = _get_leaf_sorter (new_codes [:level + 1 ])
3461
+ new_codes = [lab [left_indexer ] for lab in new_codes ]
3462
3462
3463
3463
# left_indexers are w.r.t masked frame.
3464
3464
# reverse to original frame!
3465
3465
if not mask_all :
3466
3466
left_indexer = mask .nonzero ()[0 ][left_indexer ]
3467
3467
3468
- join_index = MultiIndex (levels = new_levels , labels = new_labels ,
3468
+ join_index = MultiIndex (levels = new_levels , codes = new_codes ,
3469
3469
names = left .names , verify_integrity = False )
3470
3470
3471
3471
if right_lev_indexer is not None :
3472
3472
right_indexer = algos .take_nd (right_lev_indexer ,
3473
- join_index .labels [level ],
3473
+ join_index .codes [level ],
3474
3474
allow_fill = False )
3475
3475
else :
3476
- right_indexer = join_index .labels [level ]
3476
+ right_indexer = join_index .codes [level ]
3477
3477
3478
3478
if flip_order :
3479
3479
left_indexer , right_indexer = right_indexer , left_indexer
@@ -4103,24 +4103,12 @@ def asof_locs(self, where, mask):
4103
4103
4104
4104
return result
4105
4105
4106
- < << << << HEAD
4107
4106
def sort_values (self , return_indexer = False , ascending = True ):
4108
4107
"""
4109
4108
Return a sorted copy of the index.
4110
4109
4111
4110
Return a sorted copy of the index, and optionally return the indices
4112
4111
that sorted the index itself.
4113
- =======
4114
- levels, codes, names = (
4115
- _restore_dropped_levels_multijoin(self, other,
4116
- dropped_names,
4117
- join_idx,
4118
- lidx, ridx))
4119
-
4120
- # Re-create the multi-index
4121
- multi_join_idx = MultiIndex(levels=levels, codes=codes,
4122
- names=names, verify_integrity=False)
4123
- >>>>>>> various changes
4124
4112
4125
4113
Parameters
4126
4114
----------
@@ -4478,24 +4466,15 @@ def isin(self, values, level=None):
4478
4466
passed set of values. The length of the returned boolean array matches
4479
4467
the length of the index.
4480
4468
4481
- <<<<<<< HEAD
4482
4469
Parameters
4483
4470
----------
4484
4471
values : set or list-like
4485
4472
Sought values.
4486
4473
4487
4474
.. versionadded:: 0.18.1
4488
- =======
4489
- new_level_codes = algos.take_nd(rev_indexer, left.codes[level],
4490
- allow_fill=False)
4491
-
4492
- new_codes = list(left.codes)
4493
- new_codes[level] = new_level_codes
4494
- >>>>>>> various changes
4495
4475
4496
4476
Support for values as a set.
4497
4477
4498
- <<<<<<< HEAD
4499
4478
level : str or int, optional
4500
4479
Name or position of the index level to use (if the index is a
4501
4480
`MultiIndex`).
@@ -4504,40 +4483,18 @@ def isin(self, values, level=None):
4504
4483
-------
4505
4484
is_contained : ndarray
4506
4485
NumPy array of boolean values.
4507
- =======
4508
- if keep_order: # just drop missing values. o.w. keep order
4509
- left_indexer = np.arange(len(left), dtype=np.intp)
4510
- mask = new_level_codes != -1
4511
- if not mask.all():
4512
- new_codes = [codes_[mask] for codes_ in new_codes]
4513
- left_indexer = left_indexer[mask]
4514
-
4515
- else: # tie out the order with other
4516
- if level == 0: # outer most level, take the fast route
4517
- ngroups = 1 + new_level_codes.max()
4518
- left_indexer, counts = libalgos.groupsort_indexer(
4519
- new_level_codes, ngroups)
4520
- >>>>>>> various changes
4521
4486
4522
4487
See Also
4523
4488
--------
4524
4489
Series.isin : Same for Series.
4525
4490
DataFrame.isin : Same method for DataFrames.
4526
4491
4527
- <<<<<<< HEAD
4528
4492
Notes
4529
4493
-----
4530
4494
In the case of `MultiIndex` you must either specify `values` as a
4531
4495
list-like object containing tuples that are the same length as the
4532
4496
number of levels, or specify `level`. Otherwise it will raise a
4533
4497
``ValueError``.
4534
- =======
4535
- else: # sort the leaves
4536
- mask = new_level_codes != -1
4537
- mask_all = mask.all()
4538
- if not mask_all:
4539
- new_codes = [lab[mask] for lab in new_codes]
4540
- >>>>>>> various changes
4541
4498
4542
4499
If `level` is specified:
4543
4500
0 commit comments