code: def _execute_agg(cls, ctx, op):
      out = op.outputs[0]
  
      if op.index is None and op.columns is None:
          # index is tensor
          inputs = [ctx[inp.key] for inp in op.inputs]
  
          xdf = cls._get_xdf(inputs[0])
  
          if inputs[0].index.nlevels > 1 and op.level is not None:
              # multi index
              result = xdf.concat(inputs)
          else:
              result = (
                  cls._merge_chunks(inputs)
                  if len(inputs) > 1
                  else inputs[0]
              )
  
          ctx[out.key] = result
  
      else:
          # ndarray index or columns
          if isinstance(op.index, slice) and op.index == slice(None):
              axis = 1
              labels = op.columns
          else:
              assert op.columns is None or (
                  isinstance(op.columns, slice)
                  and op.columns == slice(None)
              )
              axis = 0
              labels = op.index
  
          inp = ctx[op.inputs[0].key]
          if inp.index.nlevels > 1 and op.level is not None:
              new_inp = inp
          else:
              # split input
              size = out.shape[axis]
              assert inp.shape[axis] % size == 0
              inputs = []
              for i in range(inp.shape[axis] // size):
                  slc = [slice(None)] * inp.ndim
                  slc[axis] = slice(size * i, size * (i + 1))
                  inputs.append(inp.iloc[tuple(slc)])
              new_inp = cls._merge_chunks(inputs)
  
          labels = cls._convert_to_writable(labels)
          if out.ndim == 2:
              result = new_inp.reindex(
                  labels=labels, axis=axis, level=op.level
              )
          else:
              result = new_inp.reindex(index=labels, level=op.level)
          ctx[out.key] = result
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import ENTITY_TYPE, recursive_tile
  from ...core.operand import OperandStage
  from ...serialization.serializables import KeyField, AnyField, StringField, Int64Field, BoolField
  from ...tensor import tensor
  from ...utils import lazy_import, pd_release_version
  from ..core import Index, INDEX_TYPE
  from ..initializer import Index
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import validate_axis_style_args, parse_index
  from .index_lib import DataFrameReindexHandler
label_desc: Use image node_id 28 for calling the DataFrameReindex obj's underlying member method code with example usage: obj._execute_agg(cls, ctx, op) without return types