code: def arrow_to_pandas(timezone, field_types, batches):
      def arrow_column_to_pandas(arrow_column, t: DataType):
          if type(t) == RowType:
              import pandas as pd
  
              series = [
                  column.to_pandas(date_as_object=True).rename(
                      field.name
                  )
                  for column, field in zip(
                      arrow_column.flatten(), arrow_column.type
                  )
              ]
              return pd.concat(series, axis=1)
          else:
              return arrow_column.to_pandas(date_as_object=True)
  
      import pyarrow as pa
  
      table = pa.Table.from_batches(batches)
      return [
          tz_convert_from_internal(
              arrow_column_to_pandas(c, t), t, timezone
          )
          for c, t in zip(table.itercolumns(), field_types)
      ]
  
file_path: flink/flink-python/pyflink/table/utils.py
imports: import ast
  from pyflink.common.types import RowKind
  from pyflink.java_gateway import get_gateway
  from pyflink.table.types import DataType, LocalZonedTimestampType, Row, RowType, TimeType, DateType, ArrayType, MapType, TimestampType, FloatType, RawType
  from pyflink.util.java_utils import to_jarray
  import datetime
  import pickle
label_desc: Use image node_id 2 for calling a global function with example usage: arrow_to_pandas(timezone, field_types, batches) and returns: unknown, pd, arrow_column