Skip to content

Commit 904f66e

Browse files
Revert "DEPR: inplace kwarg in set_index (pandas-dev#48115)"
This reverts commit 9de1f0b.
1 parent a9138a9 commit 904f66e

File tree

24 files changed

+52
-87
lines changed

24 files changed

+52
-87
lines changed

doc/source/user_guide/indexing.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1723,12 +1723,13 @@ the given columns to a MultiIndex:
17231723
frame
17241724
17251725
Other options in ``set_index`` allow you not drop the index columns or to add
1726-
the index without creating a copy of the underlying data:
1726+
the index in-place (without creating a new object):
17271727

17281728
.. ipython:: python
17291729
17301730
data.set_index('c', drop=False)
1731-
data.set_index(['a', 'b'], copy=False)
1731+
data.set_index(['a', 'b'], inplace=True)
1732+
data
17321733
17331734
Reset the index
17341735
~~~~~~~~~~~~~~~

doc/source/whatsnew/v1.5.0.rst

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -932,7 +932,6 @@ Other Deprecations
932932
- Deprecated the ``inplace`` keyword in :meth:`DataFrame.set_axis` and :meth:`Series.set_axis`, use ``obj = obj.set_axis(..., copy=False)`` instead (:issue:`48130`)
933933
- Deprecated producing a single element when iterating over a :class:`DataFrameGroupBy` or a :class:`SeriesGroupBy` that has been grouped by a list of length 1; A tuple of length one will be returned instead (:issue:`42795`)
934934
- Fixed up warning message of deprecation of :meth:`MultiIndex.lesort_depth` as public method, as the message previously referred to :meth:`MultiIndex.is_lexsorted` instead (:issue:`38701`)
935-
- Deprecated the ``inplace`` keyword in :meth:`DataFrame.set_index`, use ``df = df.set_index(..., copy=False)`` instead (:issue:`48115`)
936935
- Deprecated the ``sort_columns`` argument in :meth:`DataFrame.plot` and :meth:`Series.plot` (:issue:`47563`).
937936
- Deprecated positional arguments for all but the first argument of :meth:`DataFrame.to_stata` and :func:`read_stata`, use keyword arguments instead (:issue:`48128`).
938937
- Deprecated the ``mangle_dupe_cols`` argument in :func:`read_csv`, :func:`read_fwf`, :func:`read_table` and :func:`read_excel`. The argument was never implemented, and a new argument where the renaming pattern can be specified will be added instead (:issue:`47718`)

pandas/core/frame.py

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5856,7 +5856,7 @@ def set_index(
58565856
*,
58575857
drop: bool = ...,
58585858
append: bool = ...,
5859-
inplace: Literal[False] | lib.NoDefault = ...,
5859+
inplace: Literal[False] = ...,
58605860
verify_integrity: bool = ...,
58615861
copy: bool | lib.NoDefault = ...,
58625862
) -> DataFrame:
@@ -5881,7 +5881,7 @@ def set_index(
58815881
keys,
58825882
drop: bool = True,
58835883
append: bool = False,
5884-
inplace: bool | lib.NoDefault = lib.no_default,
5884+
inplace: bool = False,
58855885
verify_integrity: bool = False,
58865886
copy: bool | lib.NoDefault = lib.no_default,
58875887
) -> DataFrame | None:
@@ -5906,9 +5906,6 @@ def set_index(
59065906
Whether to append columns to existing index.
59075907
inplace : bool, default False
59085908
Whether to modify the DataFrame rather than creating a new one.
5909-
5910-
.. deprecated:: 1.5.0
5911-
59125909
verify_integrity : bool, default False
59135910
Check the new index for duplicates. Otherwise defer the check until
59145911
necessary. Setting to False will improve the performance of this
@@ -5982,18 +5979,7 @@ def set_index(
59825979
3 9 7 2013 84
59835980
4 16 10 2014 31
59845981
"""
5985-
if inplace is not lib.no_default:
5986-
inplace = validate_bool_kwarg(inplace, "inplace")
5987-
warnings.warn(
5988-
"The 'inplace' keyword in DataFrame.set_index is deprecated "
5989-
"and will be removed in a future version. Use "
5990-
"`df = df.set_index(..., copy=False)` instead.",
5991-
FutureWarning,
5992-
stacklevel=find_stack_level(inspect.currentframe()),
5993-
)
5994-
else:
5995-
inplace = False
5996-
5982+
inplace = validate_bool_kwarg(inplace, "inplace")
59975983
if inplace:
59985984
if copy is not lib.no_default:
59995985
raise ValueError("Cannot specify copy when inplace=True")

pandas/core/reshape/merge.py

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -782,9 +782,9 @@ def get_result(self, copy: bool = True) -> DataFrame:
782782
if self.indicator:
783783
result = self._indicator_post_merge(result)
784784

785-
result = self._maybe_add_join_keys(result, left_indexer, right_indexer)
785+
self._maybe_add_join_keys(result, left_indexer, right_indexer)
786786

787-
result = self._maybe_restore_index_levels(result)
787+
self._maybe_restore_index_levels(result)
788788

789789
self._maybe_drop_cross_column(result, self._cross)
790790

@@ -851,7 +851,7 @@ def _indicator_post_merge(self, result: DataFrame) -> DataFrame:
851851
result = result.drop(labels=["_left_indicator", "_right_indicator"], axis=1)
852852
return result
853853

854-
def _maybe_restore_index_levels(self, result: DataFrame) -> DataFrame:
854+
def _maybe_restore_index_levels(self, result: DataFrame) -> None:
855855
"""
856856
Restore index levels specified as `on` parameters
857857
@@ -869,7 +869,7 @@ def _maybe_restore_index_levels(self, result: DataFrame) -> DataFrame:
869869
870870
Returns
871871
-------
872-
DataFrame
872+
None
873873
"""
874874
names_to_restore = []
875875
for name, left_key, right_key in zip(
@@ -893,15 +893,14 @@ def _maybe_restore_index_levels(self, result: DataFrame) -> DataFrame:
893893
names_to_restore.append(name)
894894

895895
if names_to_restore:
896-
result = result.set_index(names_to_restore, copy=False)
897-
return result
896+
result.set_index(names_to_restore, inplace=True)
898897

899898
def _maybe_add_join_keys(
900899
self,
901900
result: DataFrame,
902901
left_indexer: np.ndarray | None,
903902
right_indexer: np.ndarray | None,
904-
) -> DataFrame:
903+
) -> None:
905904

906905
left_has_missing = None
907906
right_has_missing = None
@@ -992,12 +991,11 @@ def _maybe_add_join_keys(
992991
for level_name in result.index.names
993992
]
994993

995-
result = result.set_index(idx_list, copy=False)
994+
result.set_index(idx_list, inplace=True)
996995
else:
997996
result.index = Index(key_col, name=name)
998997
else:
999998
result.insert(i, name or f"key_{i}", key_col)
1000-
return result
1001999

10021000
def _get_join_indexers(self) -> tuple[npt.NDArray[np.intp], npt.NDArray[np.intp]]:
10031001
"""return the join indexers"""
@@ -1767,8 +1765,7 @@ def get_result(self, copy: bool = True) -> DataFrame:
17671765
result = self._reindex_and_concat(
17681766
join_index, left_join_indexer, right_join_indexer, copy=copy
17691767
)
1770-
1771-
result = self._maybe_add_join_keys(result, left_indexer, right_indexer)
1768+
self._maybe_add_join_keys(result, left_indexer, right_indexer)
17721769

17731770
return result
17741771

pandas/io/parsers/arrow_parser_wrapper.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def _finalize_output(self, frame: DataFrame) -> DataFrame:
117117
# String case
118118
if item not in frame.columns:
119119
raise ValueError(f"Index {item} invalid")
120-
frame = frame.set_index(self.index_col, drop=True, copy=False)
120+
frame.set_index(self.index_col, drop=True, inplace=True)
121121
# Clear names if headerless and no name given
122122
if self.header is None and not multi_index_named:
123123
frame.index.names = [None] * len(frame.index.names)

pandas/io/pytables.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4667,7 +4667,7 @@ def read(
46674667
columns.insert(0, n)
46684668
s = super().read(where=where, columns=columns, start=start, stop=stop)
46694669
if is_multi_index:
4670-
s = s.set_index(self.levels, copy=False)
4670+
s.set_index(self.levels, inplace=True)
46714671

46724672
s = s.iloc[:, 0]
46734673

pandas/io/sql.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ def _wrap_result(
152152
frame = _parse_date_columns(frame, parse_dates)
153153

154154
if index_col is not None:
155-
frame = frame.set_index(index_col, copy=False)
155+
frame.set_index(index_col, inplace=True)
156156

157157
return frame
158158

@@ -980,7 +980,7 @@ def _query_iterator(
980980
self._harmonize_columns(parse_dates=parse_dates)
981981

982982
if self.index is not None:
983-
self.frame = self.frame.set_index(self.index, copy=False)
983+
self.frame.set_index(self.index, inplace=True)
984984

985985
yield self.frame
986986

@@ -1021,7 +1021,7 @@ def read(
10211021
self._harmonize_columns(parse_dates=parse_dates)
10221022

10231023
if self.index is not None:
1024-
self.frame = self.frame.set_index(self.index, copy=False)
1024+
self.frame.set_index(self.index, inplace=True)
10251025

10261026
return self.frame
10271027

pandas/tests/frame/methods/test_combine_first.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -394,12 +394,12 @@ def test_combine_first_string_dtype_only_na(self, nullable_string_dtype):
394394
PerformanceWarning,
395395
pa_version_under7p0 and nullable_string_dtype == "string[pyarrow]",
396396
):
397-
df = df.set_index(["a", "b"], copy=False)
397+
df.set_index(["a", "b"], inplace=True)
398398
with tm.maybe_produces_warning(
399399
PerformanceWarning,
400400
pa_version_under7p0 and nullable_string_dtype == "string[pyarrow]",
401401
):
402-
df2 = df2.set_index(["a", "b"], copy=False)
402+
df2.set_index(["a", "b"], inplace=True)
403403
result = df.combine_first(df2)
404404
with tm.maybe_produces_warning(
405405
PerformanceWarning,

pandas/tests/frame/methods/test_set_index.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,9 @@ def test_set_index_copy(self):
4040

4141
msg = "Cannot specify copy when inplace=True"
4242
with pytest.raises(ValueError, match=msg):
43-
with tm.assert_produces_warning(FutureWarning, match="The 'inplace'"):
44-
df.set_index("A", inplace=True, copy=True)
43+
df.set_index("A", inplace=True, copy=True)
4544
with pytest.raises(ValueError, match=msg):
46-
with tm.assert_produces_warning(FutureWarning, match="The 'inplace'"):
47-
df.set_index("A", inplace=True, copy=False)
45+
df.set_index("A", inplace=True, copy=False)
4846

4947
def test_set_index_multiindex(self):
5048
# segfault in GH#3308
@@ -199,10 +197,7 @@ def test_set_index_drop_inplace(self, frame_of_index_cols, drop, inplace, keys):
199197

200198
if inplace:
201199
result = df.copy()
202-
with tm.assert_produces_warning(
203-
FutureWarning, match="The 'inplace' keyword"
204-
):
205-
return_value = result.set_index(keys, drop=drop, inplace=True)
200+
return_value = result.set_index(keys, drop=drop, inplace=True)
206201
assert return_value is None
207202
else:
208203
result = df.set_index(keys, drop=drop)

pandas/tests/frame/test_api.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,8 +244,7 @@ def _check_f(base, f):
244244

245245
# set_index
246246
f = lambda x: x.set_index("a", inplace=True)
247-
with tm.assert_produces_warning(FutureWarning, match="The 'inplace' keyword"):
248-
_check_f(data.copy(), f)
247+
_check_f(data.copy(), f)
249248

250249
# reset_index
251250
f = lambda x: x.reset_index(inplace=True)

0 commit comments

Comments
 (0)