Skip to content

Commit a9b0e4e

Browse files
committed
Changed according to comments + other cleanups
1 parent 0393b8d commit a9b0e4e

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

pandas/core/frame.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4615,7 +4615,7 @@ def sort_index(self, axis=0, level=None, ascending=True, inplace=False,
46154615
elif isinstance(labels, MultiIndex):
46164616
from pandas.core.sorting import lexsort_indexer
46174617

4618-
indexer = lexsort_indexer(labels._get_labels_for_sorting(),
4618+
indexer = lexsort_indexer(labels._get_codes_for_sorting(),
46194619
orders=ascending,
46204620
na_position=na_position)
46214621
else:

pandas/core/indexes/multi.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,13 @@ class MultiIndex(Index):
131131
The unique labels for each level
132132
codes : sequence of arrays
133133
Integers for each level designating which label at each location
134+
135+
.. versionadded:: 0.24.0
134136
labels : sequence of arrays
137+
Integers for each level designating which label at each location
138+
135139
.. deprecated:: 0.24.0
136140
Use ``codes`` instead
137-
138-
Integers for each level designating which label at each location
139141
sortorder : optional int
140142
Level of sortedness (must be lexicographically sorted by that
141143
level)
@@ -179,7 +181,6 @@ class MultiIndex(Index):
179181
names
180182
levels
181183
codes
182-
labels
183184
nlevels
184185
levshape
185186
@@ -190,7 +191,6 @@ class MultiIndex(Index):
190191
from_product
191192
set_levels
192193
set_codes
193-
set_labels
194194
to_frame
195195
to_flat_index
196196
is_lexsorted
@@ -972,7 +972,7 @@ def dropna(self, how='any'):
972972
else:
973973
raise ValueError("invalid how option: {0}".format(how))
974974

975-
new_codes = [label[~indexer] for label in self.codes]
975+
new_codes = [level_codes[~indexer] for level_codes in self.codes]
976976
return self.copy(codes=new_codes, deep=True)
977977

978978
def get_value(self, series, key):
@@ -1113,15 +1113,15 @@ def format(self, space=2, sparsify=None, adjoin=True, names=False,
11131113
return []
11141114

11151115
stringified_levels = []
1116-
for lev, lab in zip(self.levels, self.codes):
1116+
for lev, level_codes in zip(self.levels, self.codes):
11171117
na = na_rep if na_rep is not None else _get_na_rep(lev.dtype.type)
11181118

11191119
if len(lev) > 0:
11201120

1121-
formatted = lev.take(lab).format(formatter=formatter)
1121+
formatted = lev.take(level_codes).format(formatter=formatter)
11221122

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

11371137
result_levels = []
@@ -1649,11 +1649,11 @@ def __getitem__(self, key):
16491649
key = com.cast_scalar_indexer(key)
16501650

16511651
retval = []
1652-
for lev, lab in zip(self.levels, self.codes):
1653-
if lab[key] == -1:
1652+
for lev, level_codes in zip(self.levels, self.codes):
1653+
if level_codes[key] == -1:
16541654
retval.append(np.nan)
16551655
else:
1656-
retval.append(lev[lab[key]])
1656+
retval.append(lev[level_codes[key]])
16571657

16581658
return tuple(retval)
16591659
else:
@@ -1901,7 +1901,7 @@ def reorder_levels(self, order):
19011901
def __getslice__(self, i, j):
19021902
return self.__getitem__(slice(i, j))
19031903

1904-
def _get_labels_for_sorting(self):
1904+
def _get_codes_for_sorting(self):
19051905
"""
19061906
we categorizing our codes by using the
19071907
available categories (all, not just observed)
@@ -2726,26 +2726,26 @@ def equals(self, other):
27262726
return False
27272727

27282728
for i in range(self.nlevels):
2729-
slabels = self.codes[i]
2730-
slabels = slabels[slabels != -1]
2731-
svalues = algos.take_nd(np.asarray(self.levels[i]._values),
2732-
slabels, allow_fill=False)
2733-
2734-
olabels = other.codes[i]
2735-
olabels = olabels[olabels != -1]
2736-
ovalues = algos.take_nd(
2729+
self_codes = self.codes[i]
2730+
self_codes = self_codes[self_codes != -1]
2731+
self_values = algos.take_nd(np.asarray(self.levels[i]._values),
2732+
self_codes, allow_fill=False)
2733+
2734+
other_codes = other.codes[i]
2735+
other_codes = other_codes[other_codes != -1]
2736+
other_values = algos.take_nd(
27372737
np.asarray(other.levels[i]._values),
2738-
olabels, allow_fill=False)
2738+
other_codes, allow_fill=False)
27392739

27402740
# since we use NaT both datetime64 and timedelta64
27412741
# we can have a situation where a level is typed say
27422742
# timedelta64 in self (IOW it has other values than NaT)
27432743
# but types datetime64 in other (where its all NaT)
27442744
# but these are equivalent
2745-
if len(svalues) == 0 and len(ovalues) == 0:
2745+
if len(self_values) == 0 and len(other_values) == 0:
27462746
continue
27472747

2748-
if not array_equivalent(svalues, ovalues):
2748+
if not array_equivalent(self_values, other_values):
27492749
return False
27502750

27512751
return True
@@ -2923,7 +2923,7 @@ def insert(self, loc, item):
29232923
if k not in level:
29242924
# have to insert into level
29252925
# must insert at end otherwise you have to recompute all the
2926-
# other labels
2926+
# other codes
29272927
lev_loc = len(level)
29282928
level = level.insert(lev_loc, k)
29292929
else:
@@ -2961,13 +2961,13 @@ def isin(self, values, level=None):
29612961
else:
29622962
num = self._get_level_number(level)
29632963
levs = self.levels[num]
2964-
labs = self.codes[num]
2964+
level_codes = self.codes[num]
29652965

29662966
sought_labels = levs.isin(values).nonzero()[0]
29672967
if levs.size == 0:
2968-
return np.zeros(len(labs), dtype=np.bool_)
2968+
return np.zeros(len(level_codes), dtype=np.bool_)
29692969
else:
2970-
return np.lib.arraysetops.in1d(labs, sought_labels)
2970+
return np.lib.arraysetops.in1d(level_codes, sought_labels)
29712971

29722972

29732973
MultiIndex._add_numeric_methods_disabled()

pandas/core/series.py

Lines changed: 1 addition & 1 deletion
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)