Skip to content

Commit 7105339

Browse files
committed
DEPR .apply(reduce=)
1 parent 2f9fc7c commit 7105339

File tree

2 files changed

+37
-25
lines changed

2 files changed

+37
-25
lines changed

pandas/core/frame.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -4818,6 +4818,8 @@ def apply(self, func, axis=0, broadcast=False, raw=False, reduce=None,
48184818
while guessing, exceptions raised by func will be ignored). If
48194819
reduce is True a Series will always be returned, and if False a
48204820
DataFrame will always be returned.
4821+
4822+
.. deprecated:: 0.22.0
48214823
args : tuple
48224824
Positional arguments to pass to function in addition to the
48234825
array/series
@@ -4850,6 +4852,10 @@ def apply(self, func, axis=0, broadcast=False, raw=False, reduce=None,
48504852
axis = self._get_axis_number(axis)
48514853
ignore_failures = kwds.pop('ignore_failures', False)
48524854

4855+
if reduce is not None:
4856+
warnings.warn("the reduce keyword is deprecated",
4857+
FutureWarning, stacklevel=7)
4858+
48534859
# dispatch to agg
48544860
if axis == 0 and isinstance(func, (list, dict)):
48554861
return self.aggregate(func, axis=axis, *args, **kwds)
@@ -5760,8 +5766,10 @@ def f(x):
57605766
# numeric_only and yet we have tried a
57615767
# column-by-column reduction, where we have mixed type.
57625768
# So let's just do what we can
5763-
result = self.apply(f, reduce=False,
5764-
ignore_failures=True)
5769+
result = self._apply_standard(f,
5770+
axis=axis,
5771+
reduce=False,
5772+
ignore_failures=True)
57655773
if result.ndim == self.ndim:
57665774
result = result.iloc[0]
57675775
return result

pandas/tests/frame/test_apply.py

+27-23
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,24 @@ def test_apply_empty(self):
8282
assert_frame_equal(xp, rs)
8383

8484
# reduce with an empty DataFrame
85-
x = []
86-
result = self.empty.apply(x.append, axis=1, reduce=False)
87-
assert_frame_equal(result, self.empty)
88-
result = self.empty.apply(x.append, axis=1, reduce=True)
89-
assert_series_equal(result, Series(
90-
[], index=pd.Index([], dtype=object)))
91-
92-
empty_with_cols = DataFrame(columns=['a', 'b', 'c'])
93-
result = empty_with_cols.apply(x.append, axis=1, reduce=False)
94-
assert_frame_equal(result, empty_with_cols)
95-
result = empty_with_cols.apply(x.append, axis=1, reduce=True)
96-
assert_series_equal(result, Series(
97-
[], index=pd.Index([], dtype=object)))
98-
99-
# Ensure that x.append hasn't been called
100-
assert x == []
85+
with tm.assert_produces_warning(FutureWarning,
86+
check_stacklevel=False):
87+
x = []
88+
result = self.empty.apply(x.append, axis=1, reduce=False)
89+
assert_frame_equal(result, self.empty)
90+
result = self.empty.apply(x.append, axis=1, reduce=True)
91+
assert_series_equal(result, Series(
92+
[], index=pd.Index([], dtype=object)))
93+
94+
empty_with_cols = DataFrame(columns=['a', 'b', 'c'])
95+
result = empty_with_cols.apply(x.append, axis=1, reduce=False)
96+
assert_frame_equal(result, empty_with_cols)
97+
result = empty_with_cols.apply(x.append, axis=1, reduce=True)
98+
assert_series_equal(result, Series(
99+
[], index=pd.Index([], dtype=object)))
100+
101+
# Ensure that x.append hasn't been called
102+
assert x == []
101103

102104
def test_apply_standard_nonunique(self):
103105
df = DataFrame(
@@ -371,14 +373,16 @@ def test_apply_dict(self):
371373
B_dicts = pd.Series([dict([(0, 0), (1, 2)]), dict([(0, 1), (1, 3)])])
372374
fn = lambda x: x.to_dict()
373375

374-
for df, dicts in [(A, A_dicts), (B, B_dicts)]:
375-
reduce_true = df.apply(fn, reduce=True)
376-
reduce_false = df.apply(fn, reduce=False)
377-
reduce_none = df.apply(fn, reduce=None)
376+
with tm.assert_produces_warning(FutureWarning,
377+
check_stacklevel=False):
378+
for df, dicts in [(A, A_dicts), (B, B_dicts)]:
379+
reduce_true = df.apply(fn, reduce=True)
380+
reduce_false = df.apply(fn, reduce=False)
381+
reduce_none = df.apply(fn, reduce=None)
378382

379-
assert_series_equal(reduce_true, dicts)
380-
assert_frame_equal(reduce_false, df)
381-
assert_series_equal(reduce_none, dicts)
383+
assert_series_equal(reduce_true, dicts)
384+
assert_frame_equal(reduce_false, df)
385+
assert_series_equal(reduce_none, dicts)
382386

383387
def test_applymap(self):
384388
applied = self.frame.applymap(lambda x: x * 2)

0 commit comments

Comments
 (0)