Skip to content

Commit 46381c4

Browse files
committed
Changed according to comments + other cleanups
1 parent a0596ea commit 46381c4

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

pandas/core/frame.py

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

4620-
indexer = lexsort_indexer(labels._get_labels_for_sorting(),
4620+
indexer = lexsort_indexer(labels._get_codes_for_sorting(),
46214621
orders=ascending,
46224622
na_position=na_position)
46234623
else:

pandas/core/indexes/multi.py

+28-28
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,13 @@ class MultiIndex(Index):
140140
The unique labels for each level
141141
codes : sequence of arrays
142142
Integers for each level designating which label at each location
143+
144+
.. versionadded:: 0.24.0
143145
labels : sequence of arrays
146+
Integers for each level designating which label at each location
147+
144148
.. deprecated:: 0.24.0
145149
Use ``codes`` instead
146-
147-
Integers for each level designating which label at each location
148150
sortorder : optional int
149151
Level of sortedness (must be lexicographically sorted by that
150152
level)
@@ -188,7 +190,6 @@ class MultiIndex(Index):
188190
names
189191
levels
190192
codes
191-
labels
192193
nlevels
193194
levshape
194195
@@ -199,7 +200,6 @@ class MultiIndex(Index):
199200
from_product
200201
set_levels
201202
set_codes
202-
set_labels
203203
to_frame
204204
to_flat_index
205205
is_lexsorted
@@ -982,7 +982,7 @@ def dropna(self, how='any'):
982982
else:
983983
raise ValueError("invalid how option: {0}".format(how))
984984

985-
new_codes = [label[~indexer] for label in self.codes]
985+
new_codes = [level_codes[~indexer] for level_codes in self.codes]
986986
return self.copy(codes=new_codes, deep=True)
987987

988988
def get_value(self, series, key):
@@ -1123,15 +1123,15 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
11231123
return []
11241124

11251125
stringified_levels = []
1126-
for lev, lab in zip(self.levels, self.codes):
1126+
for lev, level_codes in zip(self.levels, self.codes):
11271127
na = na_rep if na_rep is not None else _get_na_rep(lev.dtype.type)
11281128

11291129
if len(lev) > 0:
11301130

1131-
formatted = lev.take(lab).format(formatter=formatter)
1131+
formatted = lev.take(level_codes).format(formatter=formatter)
11321132

11331133
# we have some NA
1134-
mask = lab == -1
1134+
mask = level_codes == -1
11351135
if mask.any():
11361136
formatted = np.array(formatted, dtype=object)
11371137
formatted[mask] = na
@@ -1141,7 +1141,7 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
11411141
# weird all NA case
11421142
formatted = [pprint_thing(na if isna(x) else x,
11431143
escape_chars=('\t', '\r', '\n'))
1144-
for x in algos.take_1d(lev._values, lab)]
1144+
for x in algos.take_1d(lev._values, level_codes)]
11451145
stringified_levels.append(formatted)
11461146

11471147
result_levels = []
@@ -1661,11 +1661,11 @@ def __getitem__(self, key):
16611661
key = com.cast_scalar_indexer(key)
16621662

16631663
retval = []
1664-
for lev, lab in zip(self.levels, self.codes):
1665-
if lab[key] == -1:
1664+
for lev, level_codes in zip(self.levels, self.codes):
1665+
if level_codes[key] == -1:
16661666
retval.append(np.nan)
16671667
else:
1668-
retval.append(lev[lab[key]])
1668+
retval.append(lev[level_codes[key]])
16691669

16701670
return tuple(retval)
16711671
else:
@@ -1913,7 +1913,7 @@ def reorder_levels(self, order):
19131913
def __getslice__(self, i, j):
19141914
return self.__getitem__(slice(i, j))
19151915

1916-
def _get_labels_for_sorting(self):
1916+
def _get_codes_for_sorting(self):
19171917
"""
19181918
we categorizing our codes by using the
19191919
available categories (all, not just observed)
@@ -2739,26 +2739,26 @@ def equals(self, other):
27392739
return False
27402740

27412741
for i in range(self.nlevels):
2742-
slabels = self.codes[i]
2743-
slabels = slabels[slabels != -1]
2744-
svalues = algos.take_nd(np.asarray(self.levels[i]._values),
2745-
slabels, allow_fill=False)
2746-
2747-
olabels = other.codes[i]
2748-
olabels = olabels[olabels != -1]
2749-
ovalues = algos.take_nd(
2742+
self_codes = self.codes[i]
2743+
self_codes = self_codes[self_codes != -1]
2744+
self_values = algos.take_nd(np.asarray(self.levels[i]._values),
2745+
self_codes, allow_fill=False)
2746+
2747+
other_codes = other.codes[i]
2748+
other_codes = other_codes[other_codes != -1]
2749+
other_values = algos.take_nd(
27502750
np.asarray(other.levels[i]._values),
2751-
olabels, allow_fill=False)
2751+
other_codes, allow_fill=False)
27522752

27532753
# since we use NaT both datetime64 and timedelta64
27542754
# we can have a situation where a level is typed say
27552755
# timedelta64 in self (IOW it has other values than NaT)
27562756
# but types datetime64 in other (where its all NaT)
27572757
# but these are equivalent
2758-
if len(svalues) == 0 and len(ovalues) == 0:
2758+
if len(self_values) == 0 and len(other_values) == 0:
27592759
continue
27602760

2761-
if not array_equivalent(svalues, ovalues):
2761+
if not array_equivalent(self_values, other_values):
27622762
return False
27632763

27642764
return True
@@ -2936,7 +2936,7 @@ def insert(self, loc, item):
29362936
if k not in level:
29372937
# have to insert into level
29382938
# must insert at end otherwise you have to recompute all the
2939-
# other labels
2939+
# other codes
29402940
lev_loc = len(level)
29412941
level = level.insert(lev_loc, k)
29422942
else:
@@ -2974,13 +2974,13 @@ def isin(self, values, level=None):
29742974
else:
29752975
num = self._get_level_number(level)
29762976
levs = self.levels[num]
2977-
labs = self.codes[num]
2977+
level_codes = self.codes[num]
29782978

29792979
sought_labels = levs.isin(values).nonzero()[0]
29802980
if levs.size == 0:
2981-
return np.zeros(len(labs), dtype=np.bool_)
2981+
return np.zeros(len(level_codes), dtype=np.bool_)
29822982
else:
2983-
return np.lib.arraysetops.in1d(labs, sought_labels)
2983+
return np.lib.arraysetops.in1d(level_codes, sought_labels)
29842984

29852985

29862986
MultiIndex._add_numeric_methods_disabled()

pandas/core/series.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2781,7 +2781,7 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
27812781
elif isinstance(index, MultiIndex):
27822782
from pandas.core.sorting import lexsort_indexer
27832783
labels = index._sort_levels_monotonic()
2784-
indexer = lexsort_indexer(labels._get_labels_for_sorting(),
2784+
indexer = lexsort_indexer(labels._get_codes_for_sorting(),
27852785
orders=ascending,
27862786
na_position=na_position)
27872787
else:

0 commit comments

Comments
 (0)