code: def _concat_tables(
      tables: List["pandas.DataFrame"],
  ) -> "pandas.DataFrame":
      pandas = lazy_import_pandas()
      from ray.air.util.data_batch_conversion import (
          _cast_ndarray_columns_to_tensor_extension,
      )
  
      if len(tables) > 1:
          df = pandas.concat(tables, ignore_index=True)
          df.reset_index(drop=True, inplace=True)
      else:
          df = tables[0]
      ctx = DataContext.get_current()
      if ctx.enable_tensor_extension_casting:
          df = _cast_ndarray_columns_to_tensor_extension(df)
      return df
  
imports: import collections
  import heapq
  from typing import TYPE_CHECKING, Any, Callable, Dict, Iterator, List, Optional, Tuple, TypeVar, Union
  import numpy
  from ray.air.constants import TENSOR_COLUMN_NAME
  from ray.data._internal.table_block import TableBlockAccessor, TableBlockBuilder
  from ray.data._internal.util import find_partitions
  from ray.data.block import Block, BlockAccessor, BlockExecStats, BlockMetadata, KeyType, U
  from ray.data.context import DataContext
  from ray.data.row import TableRow
label_desc: Use image node_id 3 for calling the PandasBlockBuilder obj's underlying member method code with example usage: obj._concat_tables(tables) and returns: df