Skip to content

Commit ae1b88f

Browse files
committed
Changed according to comments + other cleanups
1 parent 14aedd3 commit ae1b88f

File tree

3 files changed

+26
-26
lines changed

3 files changed

+26
-26
lines changed

pandas/core/frame.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -4698,7 +4698,7 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
46984698
elif isinstance(labels, MultiIndex):
46994699
from pandas.core.sorting import lexsort_indexer
47004700

4701-
indexer = lexsort_indexer(labels._get_labels_for_sorting(),
4701+
indexer = lexsort_indexer(labels._get_codes_for_sorting(),
47024702
orders=ascending,
47034703
na_position=na_position)
47044704
else:

pandas/core/indexes/multi.py

+24-24
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,13 @@ class MultiIndex(Index):
130130
The unique labels for each level
131131
codes : sequence of arrays
132132
Integers for each level designating which label at each location
133+
134+
.. versionadded:: 0.24.0
133135
labels : sequence of arrays
136+
Integers for each level designating which label at each location
137+
134138
.. deprecated:: 0.24.0
135139
Use ``codes`` instead
136-
137-
Integers for each level designating which label at each location
138140
sortorder : optional int
139141
Level of sortedness (must be lexicographically sorted by that
140142
level)
@@ -178,7 +180,6 @@ class MultiIndex(Index):
178180
names
179181
levels
180182
codes
181-
labels
182183
nlevels
183184
levshape
184185
@@ -189,7 +190,6 @@ class MultiIndex(Index):
189190
from_product
190191
set_levels
191192
set_codes
192-
set_labels
193193
to_frame
194194
to_flat_index
195195
is_lexsorted
@@ -1206,7 +1206,7 @@ def dropna(self, how='any'):
12061206
else:
12071207
raise ValueError("invalid how option: {0}".format(how))
12081208

1209-
new_codes = [label[~indexer] for label in self.codes]
1209+
new_codes = [level_codes[~indexer] for level_codes in self.codes]
12101210
return self.copy(codes=new_codes, deep=True)
12111211

12121212
def get_value(self, series, key):
@@ -1677,11 +1677,11 @@ def __getitem__(self, key):
16771677
key = com.cast_scalar_indexer(key)
16781678

16791679
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:
16821682
retval.append(np.nan)
16831683
else:
1684-
retval.append(lev[lab[key]])
1684+
retval.append(lev[level_codes[key]])
16851685

16861686
return tuple(retval)
16871687
else:
@@ -1929,7 +1929,7 @@ def reorder_levels(self, order):
19291929
def __getslice__(self, i, j):
19301930
return self.__getitem__(slice(i, j))
19311931

1932-
def _get_labels_for_sorting(self):
1932+
def _get_codes_for_sorting(self):
19331933
"""
19341934
we categorizing our codes by using the
19351935
available categories (all, not just observed)
@@ -2754,26 +2754,26 @@ def equals(self, other):
27542754
return False
27552755

27562756
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(
27652765
np.asarray(other.levels[i]._values),
2766-
olabels, allow_fill=False)
2766+
other_codes, allow_fill=False)
27672767

27682768
# since we use NaT both datetime64 and timedelta64
27692769
# we can have a situation where a level is typed say
27702770
# timedelta64 in self (IOW it has other values than NaT)
27712771
# but types datetime64 in other (where its all NaT)
27722772
# but these are equivalent
2773-
if len(svalues) == 0 and len(ovalues) == 0:
2773+
if len(self_values) == 0 and len(other_values) == 0:
27742774
continue
27752775

2776-
if not array_equivalent(svalues, ovalues):
2776+
if not array_equivalent(self_values, other_values):
27772777
return False
27782778

27792779
return True
@@ -2951,7 +2951,7 @@ def insert(self, loc, item):
29512951
if k not in level:
29522952
# have to insert into level
29532953
# must insert at end otherwise you have to recompute all the
2954-
# other labels
2954+
# other codes
29552955
lev_loc = len(level)
29562956
level = level.insert(lev_loc, k)
29572957
else:
@@ -2989,13 +2989,13 @@ def isin(self, values, level=None):
29892989
else:
29902990
num = self._get_level_number(level)
29912991
levs = self.levels[num]
2992-
labs = self.codes[num]
2992+
level_codes = self.codes[num]
29932993

29942994
sought_labels = levs.isin(values).nonzero()[0]
29952995
if levs.size == 0:
2996-
return np.zeros(len(labs), dtype=np.bool_)
2996+
return np.zeros(len(level_codes), dtype=np.bool_)
29972997
else:
2998-
return np.lib.arraysetops.in1d(labs, sought_labels)
2998+
return np.lib.arraysetops.in1d(level_codes, sought_labels)
29992999

30003000

30013001
MultiIndex._add_numeric_methods_disabled()

pandas/core/series.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2836,7 +2836,7 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
28362836
elif isinstance(index, MultiIndex):
28372837
from pandas.core.sorting import lexsort_indexer
28382838
labels = index._sort_levels_monotonic()
2839-
indexer = lexsort_indexer(labels._get_labels_for_sorting(),
2839+
indexer = lexsort_indexer(labels._get_codes_for_sorting(),
28402840
orders=ascending,
28412841
na_position=na_position)
28422842
else:

0 commit comments

Comments
 (0)