-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
Closed
Labels
ApplyApply, Aggregate, Transform, MapApply, Aggregate, Transform, MapDeprecateFunctionality to remove in pandasFunctionality to remove in pandasGroupby
Description
Edit: Instead of implementing the as_index=True case mentioned below, the as_index=False case should be deprecated, and the docs to SeriesGroupBy.agg should be updated. See the discussion below for details.
According to #15931 (comment), this was deprecated in 0.20.0 and raises on main now:
df = pd.DataFrame({"a": [1, 1, 2], "b": [3, 4, 5]})
gb = df.groupby("a", as_index=True)["b"]
result = gb.agg({"c": "sum"})
print(result)
# pandas.errors.SpecificationError: nested renamer is not supported
However, the docs say SeriesGroupBy.agg supports dict arguments. Also, when as_index=False it works
df = pd.DataFrame({"a": [1, 1, 2], "b": [3, 4, 5]})
gb = df.groupby("a", as_index=False)["b"]
result = gb.agg({"c": "sum"})
print(result)
# a c
# 0 1 7
# 1 2 5
This is because when as_index=False, using __getitem__ with "b" still returns a DataFrameGroupBy.
Assuming the implementation in this case isn't difficult, I'm thinking the easiest way forward is to support dictionaries in SeriesGroupBy.agg.
Metadata
Metadata
Assignees
Labels
ApplyApply, Aggregate, Transform, MapApply, Aggregate, Transform, MapDeprecateFunctionality to remove in pandasFunctionality to remove in pandasGroupby