code: def _execute_reduce(cls, ctx, op: "DataFrameGroupbySortShuffle"):
      raw_inputs = list(op.iter_mapper_data(ctx, pop=False))
      by = op.by
      xdf = cudf if op.gpu else pd
  
      r = []
  
      tuple_len = len(raw_inputs[0])
      for i in range(tuple_len):
          r.append(xdf.concat([inp[i] for inp in raw_inputs], axis=0))
      r = tuple(r)
  
      ctx[op.outputs[0].key] = r + (by,)
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import OutputType
  from ...core.operand import MapReduceOperand, OperandStage
  from ...serialization.serializables import Int32Field, ListField
  from ...utils import lazy_import
  from ..operands import DataFrameOperandMixin
  from ..sort.psrs import DataFramePSRSChunkOperand
label_desc: Use image node_id 4 for calling the DataFrameGroupbySortShuffle obj's underlying member method code with example usage: obj._execute_reduce(cls, ctx, op) without return types