From 5fe02971f8bc40a6bbb742f1f376b3650c3c8eaa Mon Sep 17 00:00:00 2001 From: Calvin Ho <18680207+calvh@users.noreply.github.com> Date: Thu, 26 Aug 2021 23:20:52 -0400 Subject: [PATCH] TST: Add test for col names during groupby().agg() Column names should consistently be retained when using df.groupby().agg() --- .../tests/groupby/aggregate/test_aggregate.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/pandas/tests/groupby/aggregate/test_aggregate.py b/pandas/tests/groupby/aggregate/test_aggregate.py index 0a693967fbb19..51de097a1d30f 100644 --- a/pandas/tests/groupby/aggregate/test_aggregate.py +++ b/pandas/tests/groupby/aggregate/test_aggregate.py @@ -1274,3 +1274,35 @@ def func(ser): expected = DataFrame([[1.0]], index=[1]) tm.assert_frame_equal(res, expected) + + +def test_groupby_agg_column_names(): + # GH42332 + + df = DataFrame(columns=["id1", "id2", "time", "values"], dtype="int").groupby( + ["id1", "id2"] + ) + + df_sum_idx = df.sum().index.names + + df_agg1_idx = df.agg( + **{"start": pd.NamedAgg(column="time", aggfunc="min")} + ).index.names + + df_agg2_idx = df.agg( + **{ + "start": pd.NamedAgg(column="time", aggfunc="min"), + "peak_time": pd.NamedAgg(column="values", aggfunc="idxmax"), + } + ).index.names + + df_agg3_idx = df.agg( + **{"peak_time": pd.NamedAgg(column="values", aggfunc="idxmax")} + ).index.names + + expected = ["id1", "id2"] + + assert df_sum_idx == expected + assert df_agg1_idx == expected + assert df_agg2_idx == expected + assert df_agg3_idx == expected