code: def to_frame(self, ctx, path):
      # TODO: use table put data instead of read all data
      df = pd.read_csv(
          path, delimiter=self._delimiter, na_values=self._na_values
      )
  
      return PandasReader(
          sample_id_name=self._sample_id_name,
          match_id_list=self._match_id_list,
          match_id_name=self._match_id_name,
          label_name=self._label_name,
          label_type=self._label_type,
          weight_name=self._weight_name,
          dtype=self._dtype,
          partition=self._partition,
          block_row_size=self._block_row_size,
      ).to_frame(ctx, df)
  
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 2 for calling the CSVReader obj's underlying member method code with example usage: obj.to_frame(ctx, path) and returns: PandasReader