Skip to content

Commit 354403d

Browse files
committed
made changes for issue 41485, set_codes function
1 parent 615eadf commit 354403d

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

pandas/core/indexes/multi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from pandas.util._decorators import (
4242
Appender,
4343
cache_readonly,
44+
deprecate_nonkeyword_arguments,
4445
doc,
4546
)
4647

@@ -994,6 +995,7 @@ def _set_codes(
994995

995996
self._reset_cache()
996997

998+
@deprecate_nonkeyword_arguments(version=None, allowed_args=["self", "codes"])
997999
def set_codes(self, codes, level=None, inplace=None, verify_integrity: bool = True):
9981000
"""
9991001
Set new codes on MultiIndex. Defaults to returning new index.

pandas/tests/indexes/multi/test_get_set.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,3 +405,32 @@ def test_set_levels_inplace_deprecated(idx, inplace):
405405

406406
with tm.assert_produces_warning(FutureWarning):
407407
idx.set_levels(levels=new_level, level=1, inplace=inplace)
408+
409+
410+
def test_set_codes_pos_args_depreciation():
411+
# https://github.com/pandas-dev/pandas/issues/41485
412+
idx = MultiIndex.from_tuples(
413+
[
414+
(1, "one"),
415+
(1, "two"),
416+
(2, "one"),
417+
(2, "two"),
418+
],
419+
names=["foo", "bar"]
420+
)
421+
msg = (
422+
r"In a future version of pandas all arguments of MultiIndex.set_codes except"
423+
r"for the argument 'codes' will be keyword-only"
424+
)
425+
with tm.assert_produces_warning(FutureWarning, match=msg):
426+
result = idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]])
427+
expected = MultiIndex.from_tuples(
428+
[
429+
(2, "one"),
430+
(1, "one"),
431+
(2, "two"),
432+
(1, "two"),
433+
],
434+
names=["foo", "bar"]
435+
)
436+
tm.assert_index_equal(result, expected)

0 commit comments

Comments
 (0)