From f558ae7f5ac7efba2c7143478e6b6b535c0e1b31 Mon Sep 17 00:00:00 2001 From: raj-thapa Date: Tue, 1 Aug 2023 13:45:28 +0000 Subject: [PATCH 1/2] Added Test for multi-index groupby partial indexing equivalence --- pandas/tests/groupby/test_grouping.py | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/pandas/tests/groupby/test_grouping.py b/pandas/tests/groupby/test_grouping.py index 1e9c4b446c4d0..7fa7f6264c14c 100644 --- a/pandas/tests/groupby/test_grouping.py +++ b/pandas/tests/groupby/test_grouping.py @@ -562,6 +562,37 @@ def test_groupby_multiindex_tuple(self): result = df.groupby(("b", 1)).groups tm.assert_dict_equal(expected, result) + def test_groupby_multiindex_partial_indexing_equivalence(self): + # GH 17977 + df = DataFrame( + [[1, 2, 3, 4], [3, 4, 5, 6], [1, 4, 2, 3]], + columns=MultiIndex.from_arrays([['a', 'b', 'b', 'c'], [1, 1, 2, 2]]), + ) + + expected_mean = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].mean() + result_mean = df.groupby([('a', 1)])['b'].mean() + tm.assert_frame_equal(expected_mean, result_mean) + + expected_sum = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].sum() + result_sum = df.groupby([('a', 1)])['b'].sum() + tm.assert_frame_equal(expected_sum, result_sum) + + expected_count = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].count() + result_count = df.groupby([('a', 1)])['b'].count() + tm.assert_frame_equal(expected_count, result_count) + + expected_min = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].min() + result_min = df.groupby([('a', 1)])['b'].min() + tm.assert_frame_equal(expected_min, result_min) + + expected_max = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].max() + result_max = df.groupby([('a', 1)])['b'].max() + tm.assert_frame_equal(expected_max, result_max) + + expected_groups = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].groups + result_groups = df.groupby([('a', 1)])['b'].groups + tm.assert_dict_equal(expected_groups, result_groups) + @pytest.mark.parametrize("sort", [True, False]) def test_groupby_level(self, sort, mframe, df): # GH 17537 From fcadd335dd515d7314fb62d7ba0c2588d55376ea Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 1 Aug 2023 15:55:49 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- pandas/tests/groupby/test_grouping.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pandas/tests/groupby/test_grouping.py b/pandas/tests/groupby/test_grouping.py index 7fa7f6264c14c..bad2e0c048dc8 100644 --- a/pandas/tests/groupby/test_grouping.py +++ b/pandas/tests/groupby/test_grouping.py @@ -566,31 +566,31 @@ def test_groupby_multiindex_partial_indexing_equivalence(self): # GH 17977 df = DataFrame( [[1, 2, 3, 4], [3, 4, 5, 6], [1, 4, 2, 3]], - columns=MultiIndex.from_arrays([['a', 'b', 'b', 'c'], [1, 1, 2, 2]]), + columns=MultiIndex.from_arrays([["a", "b", "b", "c"], [1, 1, 2, 2]]), ) - expected_mean = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].mean() - result_mean = df.groupby([('a', 1)])['b'].mean() + expected_mean = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].mean() + result_mean = df.groupby([("a", 1)])["b"].mean() tm.assert_frame_equal(expected_mean, result_mean) - expected_sum = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].sum() - result_sum = df.groupby([('a', 1)])['b'].sum() + expected_sum = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].sum() + result_sum = df.groupby([("a", 1)])["b"].sum() tm.assert_frame_equal(expected_sum, result_sum) - expected_count = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].count() - result_count = df.groupby([('a', 1)])['b'].count() + expected_count = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].count() + result_count = df.groupby([("a", 1)])["b"].count() tm.assert_frame_equal(expected_count, result_count) - expected_min = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].min() - result_min = df.groupby([('a', 1)])['b'].min() + expected_min = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].min() + result_min = df.groupby([("a", 1)])["b"].min() tm.assert_frame_equal(expected_min, result_min) - expected_max = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].max() - result_max = df.groupby([('a', 1)])['b'].max() + expected_max = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].max() + result_max = df.groupby([("a", 1)])["b"].max() tm.assert_frame_equal(expected_max, result_max) - expected_groups = df.groupby([('a', 1)])[[('b', 1), ('b', 2)]].groups - result_groups = df.groupby([('a', 1)])['b'].groups + expected_groups = df.groupby([("a", 1)])[[("b", 1), ("b", 2)]].groups + result_groups = df.groupby([("a", 1)])["b"].groups tm.assert_dict_equal(expected_groups, result_groups) @pytest.mark.parametrize("sort", [True, False])