code: def _tile_shuffle(cls, op: "DataFrameDropDuplicates", inp):
      tiled = super()._tile_shuffle(op, inp)[0]
      put_back_chunks = tiled.chunks
      if op.ignore_index:
          yield put_back_chunks
          put_back_chunks = standardize_range_index(put_back_chunks)
      new_op = op.copy()
      params = tiled.params
      params["nsplits"] = calc_nsplits(
          {c.index: c.shape for c in put_back_chunks}
      )
      params["chunks"] = put_back_chunks
      return new_op.new_tileables(op.inputs, kws=[params])
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...core.operand import OperandStage
  from ...serialization.serializables import BoolField
  from ...utils import lazy_import, calc_nsplits
  from ..operands import OutputType
  from ..utils import parse_index, hash_dataframe_on, gen_unknown_index_value, standardize_range_index
  from ._duplicate import DuplicateOperand, validate_subset
label_desc: Use image node_id 8 for calling the DataFrameDropDuplicates obj's underlying member method code with example usage: obj._tile_shuffle(cls, op, inp) and returns: new_op