code: def execute(cls, ctx, op):
      df = ctx[op.input.key]
      out = op.outputs[0]
      i = op.outputs[0].index[0]
      path = op.path
      has_wildcard = False
      if "*" in path:
          path = path.replace("*", str(i))
          has_wildcard = True
  
      if op.partition_cols is None:
          if not has_wildcard:
              fs = get_fs(path, op.storage_options)
              path = fs.pathsep.join(
                  [path.rstrip(fs.pathsep), f"{i}.parquet"]
              )
          if op.engine == "fastparquet":
              df.to_parquet(
                  path,
                  engine=op.engine,
                  compression=op.compression,
                  index=op.index,
                  open_with=open_file,
                  **op.additional_kwargs,
              )
          else:
              with open_file(
                  path, mode="wb", storage_options=op.storage_options
              ) as f:
                  df.to_parquet(
                      f,
                      engine=op.engine,
                      compression=op.compression,
                      index=op.index,
                      **op.additional_kwargs or dict(),
                  )
      else:
          if op.engine == "pyarrow":
              pq.write_to_dataset(
                  pa.Table.from_pandas(df),
                  path,
                  partition_cols=op.partition_cols,
              )
          else:  # pragma: no cover
              raise NotImplementedError(
                  "Only support pyarrow engine when specify `partition_cols`."
              )
  
      ctx[out.key] = pd.DataFrame()
  
imports: import pandas
  from ...None import opcodes
  from ...core import recursive_tile
  from ...lib.filesystem import open_file, get_fs
  from ...serialization.serializables import KeyField, AnyField, StringField, ListField, BoolField, DictField
  from ...utils import has_unknown_shape
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index
  from ..datasource.read_parquet import check_engine
label_desc: Use image node_id 13 for calling the DataFrameToParquet obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types