diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 6e71cb49596c8..25251b120e66b 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -8534,6 +8534,9 @@ def aggregate(self, func=None, axis: Axis = 0, *args, **kwargs): result_in_dict = relabel_result(result, func, columns, order) result = DataFrame(result_in_dict, index=columns) + if isinstance(result, DataFrame): + result = result.squeeze() + return result agg = aggregate diff --git a/pandas/tests/frame/test_aggregate.py b/pandas/tests/frame/test_aggregate.py new file mode 100644 index 0000000000000..3fd7e147e58a7 --- /dev/null +++ b/pandas/tests/frame/test_aggregate.py @@ -0,0 +1,19 @@ +import numpy as np + +import pandas as pd +from pandas import ( + DataFrame, + Series, +) +import pandas._testing as tm + + +def test_frame_aggregate(): + # GH#41672 + result = DataFrame([], columns=["lang", "name"]) + result = result.agg({"name": lambda y: y.values}) + assert type(result) == Series + + result = DataFrame([["a", "boof"]], columns=["lang", "name"]) + result = result.agg({"name": lambda y: y.values}) + assert type(result) == Series