Skip to content

Commit ee8cb43

Browse files
committed
simpler algo for remove_used_levels
1 parent 8e3312a commit ee8cb43

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

pandas/indexes/multi.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -1240,20 +1240,21 @@ def remove_unused_levels(self):
12401240
new_levels = []
12411241
new_labels = []
12421242

1243-
changed = np.zeros(self.nlevels, dtype=bool)
1243+
changed = np.ones(self.nlevels, dtype=bool)
12441244
for i, (lev, lab) in enumerate(zip(self.levels, self.labels)):
12451245

1246-
uniques = np.sort(algos.unique(lab))
1246+
uniques = algos.unique(lab)
12471247

12481248
# nothing unused
12491249
if len(uniques) == len(lev):
12501250
new_levels.append(lev)
12511251
new_labels.append(lab)
1252-
changed[i] = True
1252+
changed[i] = False
12531253
continue
12541254

1255-
unused = list(reversed(sorted(set(
1256-
np.arange(len(lev))) - set(uniques))))
1255+
# set difference, then reverse sort
1256+
diff = Index(np.arange(len(lev))).difference(uniques)
1257+
unused = diff.sort_values(ascending=False)
12571258

12581259
# new levels are simple
12591260
lev = lev.take(uniques)

0 commit comments

Comments
 (0)