Skip to content

Commit 9a41b72

Browse files
committed
DEPR: Deprecate Index.set_value
1 parent 4e5c9d4 commit 9a41b72

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

doc/source/whatsnew/v1.0.0.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@ Documentation Improvements
123123
Deprecations
124124
~~~~~~~~~~~~
125125

126-
-
126+
- :meth:`Index.set_values` has been deprecated. For a given index ``idx``, array ``arr``,
127+
value in ``idx`` of ``idx_val`` and a new value of ``val``, ``idx.set_value(arr, idx_val, val)``
128+
is equivalent to ``arr[idx.get_loc(idx_val) = val``, which should be used instead (:issue:`28621`).
127129
-
128130

129131
.. _whatsnew_1000.prior_deprecations:

pandas/core/indexes/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4680,10 +4680,20 @@ def set_value(self, arr, key, value):
46804680
"""
46814681
Fast lookup of value from 1-dimensional ndarray.
46824682
4683+
.. deprecated:: 1.0
4684+
46834685
Notes
46844686
-----
46854687
Only use this if you know what you're doing.
46864688
"""
4689+
warnings.warn(
4690+
(
4691+
"The 'set_value' method is deprecated, and "
4692+
"will be removed in a future version."
4693+
),
4694+
FutureWarning,
4695+
stacklevel=2,
4696+
)
46874697
self._engine.set_value(
46884698
com.values_from_object(arr), com.values_from_object(key), value
46894699
)

pandas/tests/indexes/test_base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1908,16 +1908,20 @@ def test_is_monotonic_incomparable(self, attr):
19081908
index = Index([5, datetime.now(), 7])
19091909
assert not getattr(index, attr)
19101910

1911-
def test_get_set_value(self):
1911+
def test_set_value_deprecated(self):
1912+
idx = self.create_index()
1913+
arr = np.array([1, 2, 3])
1914+
with tm.assert_produces_warning(FutureWarning):
1915+
idx.set_value(arr, idx[1], 80)
1916+
assert arr[1] == 80
1917+
1918+
def test_get_value(self):
19121919
# TODO: Remove function? GH 19728
19131920
values = np.random.randn(100)
19141921
date = self.dateIndex[67]
19151922

19161923
assert_almost_equal(self.dateIndex.get_value(values, date), values[67])
19171924

1918-
self.dateIndex.set_value(values, date, 10)
1919-
assert values[67] == 10
1920-
19211925
@pytest.mark.parametrize("values", [["foo", "bar", "quux"], {"foo", "bar", "quux"}])
19221926
@pytest.mark.parametrize(
19231927
"index,expected",

0 commit comments

Comments
 (0)