From 155ffc0e1e1260ea1e1feca17b0c83f3fe91dc69 Mon Sep 17 00:00:00 2001 From: Jacek Arent Date: Thu, 18 Sep 2025 12:31:02 -0700 Subject: [PATCH 1/2] TST: test that re-using a list of groupers will not throw ValueError --- pandas/tests/groupby/test_grouping.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pandas/tests/groupby/test_grouping.py b/pandas/tests/groupby/test_grouping.py index 77e71a5d2e4d0..d1134a02b5967 100644 --- a/pandas/tests/groupby/test_grouping.py +++ b/pandas/tests/groupby/test_grouping.py @@ -875,6 +875,25 @@ def test_groupby_tuple_keys_handle_multiindex(self): expected = expected[result.columns] tm.assert_frame_equal(result.reset_index(drop=True), expected) + def test_groupby_grouper_immutable_list_item(self): + # GH 26564 - prevent 'ValueError: all keys need to be the same shape' when re-using a list of groupers + df1 = pd.DataFrame( + [ + ["05/29/2019"], + ["05/28/2019"] + ], + columns=["date"]).assign(date=lambda df: pd.to_datetime(df["date"]) + ) + df2 = pd.DataFrame( + columns=["date"]).assign(date=lambda df: pd.to_datetime(df["date"]) + ) + + groupers = [pd.Grouper(key="date", freq="1D")] + + df1.groupby(groupers).head() + # no error + df2.groupby(groupers).head() + # get_group # -------------------------------- From f7cc2f17c1c04223496c083bbef9127eb75d0cd2 Mon Sep 17 00:00:00 2001 From: Jacek Arent Date: Fri, 19 Sep 2025 10:19:56 -0700 Subject: [PATCH 2/2] TST: Fix style check errors --- pandas/tests/groupby/test_grouping.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pandas/tests/groupby/test_grouping.py b/pandas/tests/groupby/test_grouping.py index d1134a02b5967..7372ab272ba04 100644 --- a/pandas/tests/groupby/test_grouping.py +++ b/pandas/tests/groupby/test_grouping.py @@ -876,19 +876,16 @@ def test_groupby_tuple_keys_handle_multiindex(self): tm.assert_frame_equal(result.reset_index(drop=True), expected) def test_groupby_grouper_immutable_list_item(self): - # GH 26564 - prevent 'ValueError: all keys need to be the same shape' when re-using a list of groupers - df1 = pd.DataFrame( - [ - ["05/29/2019"], - ["05/28/2019"] - ], - columns=["date"]).assign(date=lambda df: pd.to_datetime(df["date"]) + # GH 26564 - prevent 'ValueError: all keys need to be the same shape' + # when reusing a list of groupers + df1 = DataFrame([["05/29/2019"], ["05/28/2019"]], columns=["date"]).assign( + date=lambda df: pd.to_datetime(df["date"]) ) - df2 = pd.DataFrame( - columns=["date"]).assign(date=lambda df: pd.to_datetime(df["date"]) + df2 = DataFrame(columns=["date"]).assign( + date=lambda df: pd.to_datetime(df["date"]) ) - groupers = [pd.Grouper(key="date", freq="1D")] + groupers = [Grouper(key="date", freq="1D")] df1.groupby(groupers).head() # no error