code: def __init__(
      self,
      sample_id_name: Union[None, str] = None,
      match_id_list: Union[None, list] = None,
      match_id_name: Union[None, str] = None,
      label_name: str = None,
      label_type: str = "int32",
      weight_name: Union[None, str] = None,
      weight_type: str = "float32",
      dtype: str = "float32",
      partition: int = 4,
      block_row_size: int = None,
  ):
      self._sample_id_name = sample_id_name
      self._match_id_list = match_id_list
      self._match_id_name = match_id_name
      self._label_name = label_name
      self._label_type = label_type
      self._weight_name = weight_name
      self._weight_type = weight_type
      self._dtype = dtype
      self._partition = partition
      self._block_row_size = (
          block_row_size
          if block_row_size is not None
          else DATAFRAME_BLOCK_ROW_SIZE
      )
  
      if self._sample_id_name and not self._match_id_name:
          raise ValueError(
              f"As sample_id {self._sample_id_name} is given, match_id should be given too"
          )
  
imports: import functools
  import pandas
  from typing import Union
  from .conf.default_config import DATAFRAME_BLOCK_ROW_SIZE
  from .entity import types
  from ._dataframe import DataFrame
  from .manager import DataManager
  from fate.arch.trace import auto_trace
label_desc: Use image node_id 1 to create a new PandasReader object from inherited base classes: object with example: obj = PandasReader(sample_id_name, match_id_list, match_id_name, label_name, label_type, weight_name, weight_type, dtype, partition, block_row_size)