code: def test_mixed_scalar_udfs_followed_by_groupby_apply(self):
      df = self.spark.range(0, 10).toDF("v1")
      df = df.withColumn(
          "v2", udf(lambda x: x + 1, "int")(df["v1"])
      ).withColumn("v3", pandas_udf(lambda x: x + 2, "int")(df["v1"]))
  
      result = df.groupby().apply(
          pandas_udf(
              lambda x: pd.DataFrame([x.sum().sum()]),
              "sum int",
              PandasUDFType.GROUPED_MAP,
          )
      )
  
      self.assertEqual(result.collect()[0]["sum"], 165)
  
imports: import datetime
  import unittest
  from collections import OrderedDict
  from decimal import Decimal
  from typing import cast
  from pyspark.sql import Row
  from pyspark.sql.functions import array, explode, col, lit, udf, sum, pandas_udf, PandasUDFType, window
  from pyspark.sql.types import IntegerType, DoubleType, ArrayType, BinaryType, ByteType, LongType, DecimalType, ShortType, FloatType, StringType, BooleanType, StructType, StructField, NullType, MapType, YearMonthIntervalType
  from pyspark.errors import PythonException, PySparkTypeError
  from pyspark.testing.sqlutils import ReusedSQLTestCase, have_pandas, have_pyarrow, pandas_requirement_message, pyarrow_requirement_message
  from pyspark.testing.utils import QuietTest
label_desc: Use image node_id 37 for calling the GroupedApplyInPandasTestsMixin obj's underlying member method code with example usage: obj.test_mixed_scalar_udfs_followed_by_groupby_apply() without return types