From 61bd74917f46b5d83d2f53286a1748429a83d1ac Mon Sep 17 00:00:00 2001 From: trevorkask <86092192+trevorkask@users.noreply.github.com> Date: Sun, 8 Aug 2021 11:43:25 -0500 Subject: [PATCH 1/4] Update frame.py Response to changes suggested on my previous pull request --- pandas/core/frame.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 823de2133f0b3..30037cb684c5d 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -6790,7 +6790,32 @@ def swaplevel(self, i: Axis = -2, j: Axis = -1, axis: Axis = 0) -> DataFrame: assert isinstance(result.columns, MultiIndex) result.columns = result.columns.swaplevel(i, j) return result - + """Examples + -------- + >>> data={'class':['Mammals','Mammals','Reptiles','Reptiles' + ,'Amphibians','Amphibians'], + 'diet':['Omnivore','Carnivore','Carnivore','Herbivore','Omnivore','Herbivore'], + 'species':['Humans','Dogs','Snakes','Iguanas','Frogs','Aquatic Salamanders'] + } + >>> df=pd.DataFrame(data,columns=['class','diet','species']) + >>> df.set_index(['class','diet'],drop=True,inplace=True) + >>> df.reorder_levels(["diet", "class"]) + diet class species + Omnivore Mammals Humans + Carnivore Mammals Dogs + Reptiles Snakes + Herbivore Reptiles Iguanas + Omnivore Amphibians Frogs + Herbivore Amphibians Aquatic Salamanders + >>> df.reorder_levels(["class","diet"]) + class diet species + Mammals Omnivore Humans + Carnivore Dogs + Reptiles Carnivore Snakes + Herbivore Iguanas + Amphibians Omnivore Frogs + Herbivore Aquatic Salamanders + """ def reorder_levels(self, order: Sequence[Axis], axis: Axis = 0) -> DataFrame: """ Rearrange index levels using input order. May not drop or duplicate levels. From 4f098be9969de2e97cd18d4bdac3b7f6fe756692 Mon Sep 17 00:00:00 2001 From: trevorkask <86092192+trevorkask@users.noreply.github.com> Date: Sat, 14 Aug 2021 20:19:15 -0500 Subject: [PATCH 2/4] Update frame.py Fixed the indentation issue --- pandas/core/frame.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 30037cb684c5d..076366a9a397e 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -6790,7 +6790,8 @@ def swaplevel(self, i: Axis = -2, j: Axis = -1, axis: Axis = 0) -> DataFrame: assert isinstance(result.columns, MultiIndex) result.columns = result.columns.swaplevel(i, j) return result - """Examples + """ + Examples -------- >>> data={'class':['Mammals','Mammals','Reptiles','Reptiles' ,'Amphibians','Amphibians'], From f3f9ebd6726e5ba0c05ca026950e33be161b25f5 Mon Sep 17 00:00:00 2001 From: trevorkask <86092192+trevorkask@users.noreply.github.com> Date: Sun, 15 Aug 2021 20:47:31 -0500 Subject: [PATCH 3/4] Update frame.py Built the example inside the docstring and removed the unnecessary inplace=true --- pandas/core/frame.py | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 076366a9a397e..067fc85eab4bb 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -6790,7 +6790,22 @@ def swaplevel(self, i: Axis = -2, j: Axis = -1, axis: Axis = 0) -> DataFrame: assert isinstance(result.columns, MultiIndex) result.columns = result.columns.swaplevel(i, j) return result + def reorder_levels(self, order: Sequence[Axis], axis: Axis = 0) -> DataFrame: """ + Rearrange index levels using input order. May not drop or duplicate levels. + + Parameters + ---------- + order : list of int or list of str + List representing new level order. Reference level by number + (position) or by key (label). + axis : {0 or 'index', 1 or 'columns'}, default 0 + Where to reorder levels. + + Returns + ------- + DataFrame + Examples -------- >>> data={'class':['Mammals','Mammals','Reptiles','Reptiles' @@ -6799,7 +6814,7 @@ def swaplevel(self, i: Axis = -2, j: Axis = -1, axis: Axis = 0) -> DataFrame: 'species':['Humans','Dogs','Snakes','Iguanas','Frogs','Aquatic Salamanders'] } >>> df=pd.DataFrame(data,columns=['class','diet','species']) - >>> df.set_index(['class','diet'],drop=True,inplace=True) + >>> df.set_index(['class','diet'],drop=True) >>> df.reorder_levels(["diet", "class"]) diet class species Omnivore Mammals Humans @@ -6817,22 +6832,6 @@ class diet species Amphibians Omnivore Frogs Herbivore Aquatic Salamanders """ - def reorder_levels(self, order: Sequence[Axis], axis: Axis = 0) -> DataFrame: - """ - Rearrange index levels using input order. May not drop or duplicate levels. - - Parameters - ---------- - order : list of int or list of str - List representing new level order. Reference level by number - (position) or by key (label). - axis : {0 or 'index', 1 or 'columns'}, default 0 - Where to reorder levels. - - Returns - ------- - DataFrame - """ axis = self._get_axis_number(axis) if not isinstance(self._get_axis(axis), MultiIndex): # pragma: no cover raise TypeError("Can only reorder levels on a hierarchical axis.") From acc6a21d2c911755ce7588f7c81cd03daf6272bf Mon Sep 17 00:00:00 2001 From: Marco Gorelli Date: Sun, 22 Aug 2021 15:42:38 +0100 Subject: [PATCH 4/4] fixup --- pandas/core/frame.py | 46 ++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 54a6032c5ad08..304e350a377bb 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -6821,6 +6821,7 @@ def swaplevel(self, i: Axis = -2, j: Axis = -1, axis: Axis = 0) -> DataFrame: assert isinstance(result.columns, MultiIndex) result.columns = result.columns.swaplevel(i, j) return result + def reorder_levels(self, order: Sequence[Axis], axis: Axis = 0) -> DataFrame: """ Rearrange index levels using input order. May not drop or duplicate levels. @@ -6836,32 +6837,31 @@ def reorder_levels(self, order: Sequence[Axis], axis: Axis = 0) -> DataFrame: Returns ------- DataFrame - + Examples -------- - >>> data={'class':['Mammals','Mammals','Reptiles','Reptiles' - ,'Amphibians','Amphibians'], - 'diet':['Omnivore','Carnivore','Carnivore','Herbivore','Omnivore','Herbivore'], - 'species':['Humans','Dogs','Snakes','Iguanas','Frogs','Aquatic Salamanders'] - } - >>> df=pd.DataFrame(data,columns=['class','diet','species']) - >>> df.set_index(['class','diet'],drop=True) + >>> data = { + ... "class": ["Mammals", "Mammals", "Reptiles"], + ... "diet": ["Omnivore", "Carnivore", "Carnivore"], + ... "species": ["Humans", "Dogs", "Snakes"], + ... } + >>> df = pd.DataFrame(data, columns=["class", "diet", "species"]) + >>> df = df.set_index(["class", "diet"]) + >>> df + species + class diet + Mammals Omnivore Humans + Carnivore Dogs + Reptiles Carnivore Snakes + + Let's reorder the levels of the index: + >>> df.reorder_levels(["diet", "class"]) - diet class species - Omnivore Mammals Humans - Carnivore Mammals Dogs - Reptiles Snakes - Herbivore Reptiles Iguanas - Omnivore Amphibians Frogs - Herbivore Amphibians Aquatic Salamanders - >>> df.reorder_levels(["class","diet"]) - class diet species - Mammals Omnivore Humans - Carnivore Dogs - Reptiles Carnivore Snakes - Herbivore Iguanas - Amphibians Omnivore Frogs - Herbivore Aquatic Salamanders + species + diet class + Omnivore Mammals Humans + Carnivore Mammals Dogs + Reptiles Snakes """ axis = self._get_axis_number(axis) if not isinstance(self._get_axis(axis), MultiIndex): # pragma: no cover