Skip to content

Commit

Permalink
deprecate nonkeywordargs in interpolate
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcoGorelli committed May 16, 2021
1 parent b2a36bd commit f1ac08b
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 3 deletions.
1 change: 1 addition & 0 deletions doc/source/whatsnew/v1.3.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -647,6 +647,7 @@ Deprecations
- Deprecated setting :attr:`Categorical._codes`, create a new :class:`Categorical` with the desired codes instead (:issue:`40606`)
- Deprecated behavior of :meth:`DatetimeIndex.union` with mixed timezones; in a future version both will be cast to UTC instead of object dtype (:issue:`39328`)
- Deprecated using ``usecols`` with out of bounds indices for ``read_csv`` with ``engine="c"`` (:issue:`25623`)
- Deprecated passing arguments as positional in :meth:`DataFrame.interpolate` and :meth:`Series.interpolate` (:issue:`41485`)

.. ---------------------------------------------------------------------------
Expand Down
2 changes: 2 additions & 0 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
InvalidIndexError,
)
from pandas.util._decorators import (
deprecate_nonkeyword_arguments,
doc,
rewrite_axis_style_signature,
)
Expand Down Expand Up @@ -6696,6 +6697,7 @@ def replace(
else:
return result.__finalize__(self, method="replace")

@deprecate_nonkeyword_arguments(version="2.0", allowed_args=["self"])
@final
def interpolate(
self: FrameOrSeries,
Expand Down
10 changes: 10 additions & 0 deletions pandas/tests/frame/methods/test_interpolate.py
Original file line number Diff line number Diff line change
Expand Up @@ -342,3 +342,13 @@ def test_interp_fillna_methods(self, axis, method):
expected = df.fillna(axis=axis, method=method)
result = df.interpolate(method=method, axis=axis)
tm.assert_frame_equal(result, expected)

def test_interpolate_pos_args_deprecation(self):
# https://github.com/pandas-dev/pandas/issues/41485
df = DataFrame({"a": [1, 2, 3]})
msg = (
r"Starting with Pandas version 2\.0 all arguments of interpolate except "
r"for the argument 'self' will be keyword-only"
)
with tm.assert_produces_warning(FutureWarning, match=msg):
df.interpolate(0)
8 changes: 5 additions & 3 deletions pandas/tests/resample/test_datetime_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -1026,12 +1026,14 @@ def test_resample_dtype_coercion():
df = {"a": [1, 3, 1, 4]}
df = DataFrame(df, index=date_range("2017-01-01", "2017-01-04"))

expected = df.astype("float64").resample("H").mean()["a"].interpolate("cubic")
expected = (
df.astype("float64").resample("H").mean()["a"].interpolate(method="cubic")
)

result = df.resample("H")["a"].mean().interpolate("cubic")
result = df.resample("H")["a"].mean().interpolate(method="cubic")
tm.assert_series_equal(result, expected)

result = df.resample("H").mean()["a"].interpolate("cubic")
result = df.resample("H").mean()["a"].interpolate(method="cubic")
tm.assert_series_equal(result, expected)


Expand Down
10 changes: 10 additions & 0 deletions pandas/tests/series/methods/test_interpolate.py
Original file line number Diff line number Diff line change
Expand Up @@ -811,3 +811,13 @@ def test_interpolate_unsorted_index(self, ascending, expected_values):
result = ts.sort_index(ascending=ascending).interpolate(method="index")
expected = Series(data=expected_values, index=expected_values, dtype=float)
tm.assert_series_equal(result, expected)

def test_interpolate_pos_args_deprecation(self):
# https://github.com/pandas-dev/pandas/issues/41485
ser = Series([1, 2, 3])
msg = (
r"Starting with Pandas version 2\.0 all arguments of interpolate except "
r"for the argument 'self' will be keyword-only"
)
with tm.assert_produces_warning(FutureWarning, match=msg):
ser.interpolate(0)

0 comments on commit f1ac08b

Please sign in to comment.