Skip to content

Commit a298795

Browse files
authored
DEPR: Update groupby.apply DeprecationWarning to FutureWarning (#59751)
* DEPR: Update groupby.apply DeprecationWarning to FutureWarning * Remove xfail * Add whatsnew note
1 parent 84a37f7 commit a298795

22 files changed

+151
-154
lines changed

doc/source/whatsnew/v2.3.0.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ notable_bug_fix1
5454
Deprecations
5555
~~~~~~~~~~~~
5656
- Deprecated allowing non-``bool`` values for ``na`` in :meth:`.str.contains`, :meth:`.str.startswith`, and :meth:`.str.endswith` for dtypes that do not already disallow these (:issue:`59615`)
57-
-
57+
- The deprecation of setting the argument ``include_groups`` to ``True`` in :meth:`DataFrameGroupBy.apply` has been promoted from a ``DeprecationWarning`` to ``FutureWarning``; only ``False`` will be allowed (:issue:`7155`)
5858

5959
.. ---------------------------------------------------------------------------
6060
.. _whatsnew_230.performance:

pandas/core/groupby/groupby.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1831,7 +1831,7 @@ def f(g):
18311831
message=_apply_groupings_depr.format(
18321832
type(self).__name__, "apply"
18331833
),
1834-
category=DeprecationWarning,
1834+
category=FutureWarning,
18351835
stacklevel=find_stack_level(),
18361836
)
18371837
except TypeError:

pandas/core/resample.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2913,7 +2913,7 @@ def _apply(
29132913
new_message = _apply_groupings_depr.format("DataFrameGroupBy", "resample")
29142914
with rewrite_warning(
29152915
target_message=target_message,
2916-
target_category=DeprecationWarning,
2916+
target_category=FutureWarning,
29172917
new_message=new_message,
29182918
):
29192919
result = grouped.apply(how, *args, include_groups=include_groups, **kwargs)

pandas/tests/extension/base/groupby.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,11 @@ def test_groupby_extension_transform(self, data_for_grouping):
114114
def test_groupby_extension_apply(self, data_for_grouping, groupby_apply_op):
115115
df = pd.DataFrame({"A": [1, 1, 2, 2, 3, 3, 1, 4], "B": data_for_grouping})
116116
msg = "DataFrameGroupBy.apply operated on the grouping columns"
117-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
117+
with tm.assert_produces_warning(FutureWarning, match=msg):
118118
df.groupby("B", group_keys=False, observed=False).apply(groupby_apply_op)
119119
df.groupby("B", group_keys=False, observed=False).A.apply(groupby_apply_op)
120120
msg = "DataFrameGroupBy.apply operated on the grouping columns"
121-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
121+
with tm.assert_produces_warning(FutureWarning, match=msg):
122122
df.groupby("A", group_keys=False, observed=False).apply(groupby_apply_op)
123123
df.groupby("A", group_keys=False, observed=False).B.apply(groupby_apply_op)
124124

pandas/tests/frame/test_stack_unstack.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1832,7 +1832,7 @@ def test_unstack_bug(self, future_stack):
18321832
)
18331833

18341834
msg = "DataFrameGroupBy.apply operated on the grouping columns"
1835-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
1835+
with tm.assert_produces_warning(FutureWarning, match=msg):
18361836
result = df.groupby(["state", "exp", "barcode", "v"]).apply(len)
18371837

18381838
unstacked = result.unstack()

pandas/tests/groupby/aggregate/test_other.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,15 +505,15 @@ def test_agg_timezone_round_trip():
505505

506506
# GH#27110 applying iloc should return a DataFrame
507507
msg = "DataFrameGroupBy.apply operated on the grouping columns"
508-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
508+
with tm.assert_produces_warning(FutureWarning, match=msg):
509509
assert ts == grouped.apply(lambda x: x.iloc[0]).iloc[0, 1]
510510

511511
ts = df["B"].iloc[2]
512512
assert ts == grouped.last()["B"].iloc[0]
513513

514514
# GH#27110 applying iloc should return a DataFrame
515515
msg = "DataFrameGroupBy.apply operated on the grouping columns"
516-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
516+
with tm.assert_produces_warning(FutureWarning, match=msg):
517517
assert ts == grouped.apply(lambda x: x.iloc[-1]).iloc[0, 1]
518518

519519

pandas/tests/groupby/methods/test_value_counts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ def test_against_frame_and_seriesgroupby(
337337
)
338338
if frame:
339339
# compare against apply with DataFrame value_counts
340-
warn = DeprecationWarning if groupby == "column" else None
340+
warn = FutureWarning if groupby == "column" else None
341341
msg = "DataFrameGroupBy.apply operated on the grouping columns"
342342
with tm.assert_produces_warning(warn, match=msg):
343343
expected = gp.apply(

pandas/tests/groupby/test_apply.py

Lines changed: 63 additions & 63 deletions
Large diffs are not rendered by default.

pandas/tests/groupby/test_apply_mutate.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ def test_group_by_copy():
1414
).set_index("name")
1515

1616
msg = "DataFrameGroupBy.apply operated on the grouping columns"
17-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
17+
with tm.assert_produces_warning(FutureWarning, match=msg):
1818
grp_by_same_value = df.groupby(["age"], group_keys=False).apply(
1919
lambda group: group
2020
)
2121
msg = "DataFrameGroupBy.apply operated on the grouping columns"
22-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
22+
with tm.assert_produces_warning(FutureWarning, match=msg):
2323
grp_by_copy = df.groupby(["age"], group_keys=False).apply(
2424
lambda group: group.copy()
2525
)
@@ -54,9 +54,9 @@ def f_no_copy(x):
5454
return x.groupby("cat2")["rank"].min()
5555

5656
msg = "DataFrameGroupBy.apply operated on the grouping columns"
57-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
57+
with tm.assert_produces_warning(FutureWarning, match=msg):
5858
grpby_copy = df.groupby("cat1").apply(f_copy)
59-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
59+
with tm.assert_produces_warning(FutureWarning, match=msg):
6060
grpby_no_copy = df.groupby("cat1").apply(f_no_copy)
6161
tm.assert_series_equal(grpby_copy, grpby_no_copy)
6262

@@ -68,9 +68,9 @@ def test_no_mutate_but_looks_like():
6868
df = pd.DataFrame({"key": [1, 1, 1, 2, 2, 2, 3, 3, 3], "value": range(9)})
6969

7070
msg = "DataFrameGroupBy.apply operated on the grouping columns"
71-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
71+
with tm.assert_produces_warning(FutureWarning, match=msg):
7272
result1 = df.groupby("key", group_keys=True).apply(lambda x: x[:].key)
73-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
73+
with tm.assert_produces_warning(FutureWarning, match=msg):
7474
result2 = df.groupby("key", group_keys=True).apply(lambda x: x.key)
7575
tm.assert_series_equal(result1, result2)
7676

@@ -87,7 +87,7 @@ def fn(x):
8787

8888
msg = "DataFrameGroupBy.apply operated on the grouping columns"
8989
with tm.assert_produces_warning(
90-
DeprecationWarning, match=msg, raise_on_extra_warnings=not warn_copy_on_write
90+
FutureWarning, match=msg, raise_on_extra_warnings=not warn_copy_on_write
9191
):
9292
result = df.groupby(["col1"], as_index=False).apply(fn)
9393
expected = pd.Series(

pandas/tests/groupby/test_categorical.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def f(x):
127127
return x.drop_duplicates("person_name").iloc[0]
128128

129129
msg = "DataFrameGroupBy.apply operated on the grouping columns"
130-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
130+
with tm.assert_produces_warning(FutureWarning, match=msg):
131131
result = g.apply(f)
132132
expected = x.iloc[[0, 1]].copy()
133133
expected.index = Index([1, 2], name="person_id")
@@ -335,7 +335,7 @@ def test_apply(ordered):
335335
idx = MultiIndex.from_arrays([missing, dense], names=["missing", "dense"])
336336
expected = Series(1, index=idx)
337337
msg = "DataFrameGroupBy.apply operated on the grouping columns"
338-
with tm.assert_produces_warning(DeprecationWarning, match=msg):
338+
with tm.assert_produces_warning(FutureWarning, match=msg):
339339
result = grouped.apply(lambda x: 1)
340340
tm.assert_series_equal(result, expected)
341341

@@ -2053,7 +2053,7 @@ def test_category_order_apply(as_index, sort, observed, method, index_kind, orde
20532053
df["a2"] = df["a"]
20542054
df = df.set_index(keys)
20552055
gb = df.groupby(keys, as_index=as_index, sort=sort, observed=observed)
2056-
warn = DeprecationWarning if method == "apply" and index_kind == "range" else None
2056+
warn = FutureWarning if method == "apply" and index_kind == "range" else None
20572057
msg = "DataFrameGroupBy.apply operated on the grouping columns"
20582058
with tm.assert_produces_warning(warn, match=msg):
20592059
op_result = getattr(gb, method)(lambda x: x.sum(numeric_only=True))

0 commit comments

Comments
 (0)