code: def test_groupby_multiindex_columns(self):
      pdf1 = pd.DataFrame(
          {
              ("y", "c"): [4, 2, 7, 3, None, 1, 1, 1, 2],
              ("z", "d"): list("abcdefght"),
          }
      )
      pdf2 = pd.DataFrame(
          {
              ("x", "a"): [1, 2, 6, 4, 4, 6, 4, 3, 7],
              ("x", "b"): [4, 2, 7, 3, 3, 1, 1, 1, 2],
          }
      )
      psdf1 = ps.from_pandas(pdf1)
      psdf2 = ps.from_pandas(pdf2)
  
      self.assert_eq(
          psdf1.groupby(psdf2[("x", "a")]).sum().sort_index(),
          pdf1.groupby(pdf2[("x", "a")]).sum().sort_index(),
      )
  
      self.assert_eq(
          psdf1.groupby(psdf2[("x", "a")], as_index=False)
          .sum()
          .sort_values(("y", "c"))
          .reset_index(drop=True),
          pdf1.groupby(pdf2[("x", "a")], as_index=False)
          .sum()
          .sort_values(("y", "c"))
          .reset_index(drop=True),
      )
      self.assert_eq(
          psdf1.groupby(psdf2[("x", "a")])[[("y", "c")]]
          .sum()
          .sort_index(),
          pdf1.groupby(pdf2[("x", "a")])[[("y", "c")]]
          .sum()
          .sort_index(),
      )
  
file_path: spark/python/pyspark/pandas/tests/diff_frames_ops/test_groupby.py
imports: import pandas
  from pyspark import pandas
  from pyspark.pandas.config import set_option, reset_option
  from pyspark.testing.pandasutils import PandasOnSparkTestCase
  from pyspark.testing.sqlutils import SQLTestUtils
label_desc: Use image node_id 3 for calling the GroupByMixin obj's underlying member method code with example usage: obj.test_groupby_multiindex_columns() without return types