diff --git a/pandas/core/index.py b/pandas/core/index.py index 99b2ff809013d..a30883dd79b7e 100644 --- a/pandas/core/index.py +++ b/pandas/core/index.py @@ -790,7 +790,8 @@ def sortlevel(self, level=0, ascending=True): Parameters ---------- - level : int, default 0 + level : int or str, default 0 + If a string is given, must be a name of the level ascending : boolean, default True False to sort in descending order @@ -799,8 +800,15 @@ def sortlevel(self, level=0, ascending=True): sorted_index : MultiIndex """ labels = list(self.labels) + if not isinstance(level, int): + try: + level = self.names.index(level) + except: + raise ValueError("level %s not in index names" % level) + primary = labels.pop(level) + # Lexsort starts from END indexer = np.lexsort(tuple(labels[::-1]) + (primary,))