code: def execute(cls, ctx, op):
      if op.stage == OperandStage.map:
          cls._execute_map(ctx, op)
      elif op.stage == OperandStage.agg:
          cls._execute_agg(ctx, op)
      else:
          assert op.stage is None
          df = ctx[op.input.key]
          out = op.outputs[0]
          path = cls._get_path(op.path, op.outputs[0].index[0])
          with open_file(
              path, mode="w", storage_options=op.storage_options
          ) as f:
              cls._to_csv(op, df, f)
          ctx[out.key] = (
              pd.DataFrame()
              if out.ndim == 2
              else pd.Series([], dtype=out.dtype)
          )
  
imports: from io import StringIO
  import numpy
  import pandas
  from ...None import opcodes
  from ...core import OutputType, recursive_tile
  from ...core.operand import OperandStage
  from ...lib.filesystem import open_file
  from ...serialization.serializables import KeyField, AnyField, StringField, ListField, BoolField, Int32Field, Int64Field, DictField
  from ...tensor.core import TensorOrder
  from ...tensor.operands import TensorOperand, TensorOperandMixin
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index
label_desc: Use image node_id 33 for calling the DataFrameToCSV obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types