@@ -130,11 +130,13 @@ class MultiIndex(Index):
130
130
The unique labels for each level
131
131
codes : sequence of arrays
132
132
Integers for each level designating which label at each location
133
+
134
+ .. versionadded:: 0.24.0
133
135
labels : sequence of arrays
136
+ Integers for each level designating which label at each location
137
+
134
138
.. deprecated:: 0.24.0
135
139
Use ``codes`` instead
136
-
137
- Integers for each level designating which label at each location
138
140
sortorder : optional int
139
141
Level of sortedness (must be lexicographically sorted by that
140
142
level)
@@ -178,7 +180,6 @@ class MultiIndex(Index):
178
180
names
179
181
levels
180
182
codes
181
- labels
182
183
nlevels
183
184
levshape
184
185
@@ -189,7 +190,6 @@ class MultiIndex(Index):
189
190
from_product
190
191
set_levels
191
192
set_codes
192
- set_labels
193
193
to_frame
194
194
to_flat_index
195
195
is_lexsorted
@@ -1206,7 +1206,7 @@ def dropna(self, how='any'):
1206
1206
else :
1207
1207
raise ValueError ("invalid how option: {0}" .format (how ))
1208
1208
1209
- new_codes = [label [~ indexer ] for label in self .codes ]
1209
+ new_codes = [level_codes [~ indexer ] for level_codes in self .codes ]
1210
1210
return self .copy (codes = new_codes , deep = True )
1211
1211
1212
1212
def get_value (self , series , key ):
@@ -1677,11 +1677,11 @@ def __getitem__(self, key):
1677
1677
key = com .cast_scalar_indexer (key )
1678
1678
1679
1679
retval = []
1680
- for lev , lab in zip (self .levels , self .codes ):
1681
- if lab [key ] == - 1 :
1680
+ for lev , level_codes in zip (self .levels , self .codes ):
1681
+ if level_codes [key ] == - 1 :
1682
1682
retval .append (np .nan )
1683
1683
else :
1684
- retval .append (lev [lab [key ]])
1684
+ retval .append (lev [level_codes [key ]])
1685
1685
1686
1686
return tuple (retval )
1687
1687
else :
@@ -1929,7 +1929,7 @@ def reorder_levels(self, order):
1929
1929
def __getslice__ (self , i , j ):
1930
1930
return self .__getitem__ (slice (i , j ))
1931
1931
1932
- def _get_labels_for_sorting (self ):
1932
+ def _get_codes_for_sorting (self ):
1933
1933
"""
1934
1934
we categorizing our codes by using the
1935
1935
available categories (all, not just observed)
@@ -2754,26 +2754,26 @@ def equals(self, other):
2754
2754
return False
2755
2755
2756
2756
for i in range (self .nlevels ):
2757
- slabels = self .codes [i ]
2758
- slabels = slabels [ slabels != - 1 ]
2759
- svalues = algos .take_nd (np .asarray (self .levels [i ]._values ),
2760
- slabels , allow_fill = False )
2761
-
2762
- olabels = other .codes [i ]
2763
- olabels = olabels [ olabels != - 1 ]
2764
- ovalues = algos .take_nd (
2757
+ self_codes = self .codes [i ]
2758
+ self_codes = self_codes [ self_codes != - 1 ]
2759
+ self_values = algos .take_nd (np .asarray (self .levels [i ]._values ),
2760
+ self_codes , allow_fill = False )
2761
+
2762
+ other_codes = other .codes [i ]
2763
+ other_codes = other_codes [ other_codes != - 1 ]
2764
+ other_values = algos .take_nd (
2765
2765
np .asarray (other .levels [i ]._values ),
2766
- olabels , allow_fill = False )
2766
+ other_codes , allow_fill = False )
2767
2767
2768
2768
# since we use NaT both datetime64 and timedelta64
2769
2769
# we can have a situation where a level is typed say
2770
2770
# timedelta64 in self (IOW it has other values than NaT)
2771
2771
# but types datetime64 in other (where its all NaT)
2772
2772
# but these are equivalent
2773
- if len (svalues ) == 0 and len (ovalues ) == 0 :
2773
+ if len (self_values ) == 0 and len (other_values ) == 0 :
2774
2774
continue
2775
2775
2776
- if not array_equivalent (svalues , ovalues ):
2776
+ if not array_equivalent (self_values , other_values ):
2777
2777
return False
2778
2778
2779
2779
return True
@@ -2951,7 +2951,7 @@ def insert(self, loc, item):
2951
2951
if k not in level :
2952
2952
# have to insert into level
2953
2953
# must insert at end otherwise you have to recompute all the
2954
- # other labels
2954
+ # other codes
2955
2955
lev_loc = len (level )
2956
2956
level = level .insert (lev_loc , k )
2957
2957
else :
@@ -2989,13 +2989,13 @@ def isin(self, values, level=None):
2989
2989
else :
2990
2990
num = self ._get_level_number (level )
2991
2991
levs = self .levels [num ]
2992
- labs = self .codes [num ]
2992
+ level_codes = self .codes [num ]
2993
2993
2994
2994
sought_labels = levs .isin (values ).nonzero ()[0 ]
2995
2995
if levs .size == 0 :
2996
- return np .zeros (len (labs ), dtype = np .bool_ )
2996
+ return np .zeros (len (level_codes ), dtype = np .bool_ )
2997
2997
else :
2998
- return np .lib .arraysetops .in1d (labs , sought_labels )
2998
+ return np .lib .arraysetops .in1d (level_codes , sought_labels )
2999
2999
3000
3000
3001
3001
MultiIndex ._add_numeric_methods_disabled ()
0 commit comments