Skip to content

Commit 665032b

Browse files
committed
ENH: added parameter "positional" in DataFrame.reorder_levels (GH30289)
1 parent 54991b2 commit 665032b

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

doc/source/whatsnew/v1.0.0.rst

+1
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ Other enhancements
207207
- The ``partition_cols`` argument in :meth:`DataFrame.to_parquet` now accepts a string (:issue:`27117`)
208208
- :func:`to_parquet` now appropriately handles the ``schema`` argument for user defined schemas in the pyarrow engine. (:issue: `30270`)
209209
- DataFrame constructor preserve `ExtensionArray` dtype with `ExtensionArray` (:issue:`11363`)
210+
- Added `positional` optional parameter in :meth:`DataFrame.reorder_levels` to specify the type of levels to use, labels or positions or both (:issue:`30289`)
210211
- Added `positional` optional parameter in :meth:`MultiIndex.reorder_levels` to specify the type of levels to use, labels or positions or both (:issue:`30289`)
211212

212213

pandas/core/frame.py

+11-3
Original file line numberDiff line numberDiff line change
@@ -5040,7 +5040,7 @@ def swaplevel(self, i=-2, j=-1, axis=0):
50405040
result.columns = result.columns.swaplevel(i, j)
50415041
return result
50425042

5043-
def reorder_levels(self, order, axis=0):
5043+
def reorder_levels(self, order, axis=0, positional=None):
50445044
"""
50455045
Rearrange index levels using input order. May not drop or duplicate levels.
50465046
@@ -5051,6 +5051,14 @@ def reorder_levels(self, order, axis=0):
50515051
(position) or by key (label).
50525052
axis : int
50535053
Where to reorder levels.
5054+
positional : bool, optional
5055+
How to interpret integer values in `order`.
5056+
5057+
* None (default): prefer treating the values as labels,
5058+
but fall back to positional if no label with that
5059+
value is value.
5060+
* True : only treat integer values as positions.
5061+
* False : only treat integer values as labels.
50545062
50555063
Returns
50565064
-------
@@ -5063,9 +5071,9 @@ def reorder_levels(self, order, axis=0):
50635071
result = self.copy()
50645072

50655073
if axis == 0:
5066-
result.index = result.index.reorder_levels(order, positional=True)
5074+
result.index = result.index.reorder_levels(order, positional=positional)
50675075
else:
5068-
result.columns = result.columns.reorder_levels(order, positional=True)
5076+
result.columns = result.columns.reorder_levels(order, positional=positional)
50695077
return result
50705078

50715079
# ----------------------------------------------------------------------

0 commit comments

Comments
 (0)