code: def _tile_dataframe(cls, op):
      df = build_concatenated_rows_frame(op.inputs[0])
  
      if df.chunk_shape[op.axis] == 1:
          out_chunks = []
          for chunk in df.chunks:
              chunk_op = op.copy().reset_key()
              out_chunks.append(
                  chunk_op.new_chunk(
                      [chunk],
                      shape=chunk.shape,
                      index=chunk.index,
                      index_value=op.outputs[0].index_value,
                      columns_value=chunk.columns_value,
                      dtypes=chunk.dtypes,
                  )
              )
          new_op = op.copy()
          kws = op.outputs[0].params.copy()
          kws["nsplits"] = df.nsplits
          kws["chunks"] = out_chunks
          return new_op.new_dataframes(op.inputs, **kws)
      else:
          if op.na_position != "last":  # pragma: no cover
              raise NotImplementedError(
                  "Only support puts NaNs at the end."
              )
          # use parallel sorting by regular sampling
          return (yield from cls._tile_psrs(op, df))
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core import OutputType
  from ...serialization.serializables import ListField
  from ...tensor.base.sort import _validate_sort_psrs_kinds
  from ..utils import parse_index, validate_axis, build_concatenated_rows_frame
  from ..core import IndexValue
  from .core import DataFrameSortOperand
  from .psrs import DataFramePSRSOperandMixin, execute_sort_values
label_desc: Use image node_id 2 for calling the DataFrameSortValues obj's underlying member method code with example usage: obj._tile_dataframe(cls, op) and returns: new_op, unknown