code: def execute(cls, ctx, op: "DataFrameRenameAxis"):
      in_data = ctx[op.inputs[0].key]
      if op.index is not None:
          val, axis = op.index, 0
      else:
          val, axis = op.columns, 1
  
      if op.level is None:
          ctx[op.outputs[0].key] = in_data.rename_axis(
              val, axis=axis, copy=op.copy_value
          )
      else:
          ret = in_data.copy() if op.copy_value else in_data
          ret.axes[axis].set_names(val, level=op.level, inplace=True)
          ctx[op.outputs[0].key] = ret
  
imports: from ...None import opcodes
  from ...core import OutputType
  from ...serialization.serializables import AnyField, BoolField
  from ..core import DATAFRAME_TYPE
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import validate_axis, parse_index, build_df, build_series
label_desc: Use image node_id 9 for calling the DataFrameRenameAxis obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types