code: def execute(cls, ctx, op: "DataFrameRename"):
      input_ = ctx[op.inputs[0].key]
      if input_.ndim == 2:
          ctx[op.outputs[0].key] = input_.rename(
              index=op.index_mapper,
              columns=op.columns_mapper,
              level=op.level,
          )
      elif op.output_types[0] == OutputType.series:
          ctx[op.outputs[0].key] = input_.rename(
              index=op.index_mapper or op.new_name, level=op.level
          )
      else:
          ctx[op.outputs[0].key] = input_.set_names(
              op.index_mapper or op.new_name, level=op.level
          )
  
imports: import warnings
  from ...None import opcodes
  from ...core import get_output_types, OutputType
  from ...serialization.serializables import AnyField, StringField
  from ..core import SERIES_TYPE
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import build_df, build_series, validate_axis, parse_index
label_desc: Use image node_id 11 for calling the DataFrameRename obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types