parameters: (json, precise_float)
return_statement: return df
docstring: Builds a DataFrame from a given schema
  
      Parameters
      ----------
      json :
          A JSON table schema
      precise_float : boolean
          Flag controlling precision when decoding string to double values, as
          dictated by ``read_json``
  
      Returns
      -------
      df : DataFrame
  
      Raises
      ------
      NotImplementedError
          If the JSON table schema contains either timezone or timedelta data
  
      Notes
      -----
          Because :func:`DataFrame.to_json` uses the string 'index' to denote a
          name-less :class:`Index`, this function sets the name of the returned
          :class:`DataFrame` to ``None`` when said string is encountered with a
          normal :class:`Index`. For a :class:`MultiIndex`, the same limitation
          applies to any strings beginning with 'level_'. Therefore, an
          :class:`Index` name of 'index'  and :class:`MultiIndex` names starting
          with 'level_' are not supported.
  
      See Also
      --------
      build_table_schema : Inverse function.
      pandas.read_json
docstring_summary: Builds a DataFrame from a given schema
docstring_tokens: Builds a DataFrame from a given schema
function: def parse_table_schema(json, precise_float):
      """
      Builds a DataFrame from a given schema
  
      Parameters
      ----------
      json :
          A JSON table schema
      precise_float : boolean
          Flag controlling precision when decoding string to double values, as
          dictated by ``read_json``
  
      Returns
      -------
      df : DataFrame
  
      Raises
      ------
      NotImplementedError
          If the JSON table schema contains either timezone or timedelta data
  
      Notes
      -----
          Because :func:`DataFrame.to_json` uses the string 'index' to denote a
          name-less :class:`Index`, this function sets the name of the returned
          :class:`DataFrame` to ``None`` when said string is encountered with a
          normal :class:`Index`. For a :class:`MultiIndex`, the same limitation
          applies to any strings beginning with 'level_'. Therefore, an
          :class:`Index` name of 'index'  and :class:`MultiIndex` names starting
          with 'level_' are not supported.
  
      See Also
      --------
      build_table_schema : Inverse function.
      pandas.read_json
      """
      table = loads(json, precise_float=precise_float)
      col_order = [field["name"] for field in table["schema"]["fields"]]
      df = DataFrame(table["data"], columns=col_order)[col_order]
  
      dtypes = {
          field["name"]: convert_json_field_to_pandas_type(field)
          for field in table["schema"]["fields"]
      }
  
      # Cannot directly use as_type with timezone data on object; raise for now
      if any(str(x).startswith("datetime64[ns, ") for x in dtypes.values()):
          raise NotImplementedError('table="orient" can not yet read timezone data')
  
      # No ISO constructor for Timedelta as of yet, so need to raise
      if "timedelta64" in dtypes.values():
          raise NotImplementedError(
              'table="orient" can not yet read ISO-formatted Timedelta data'
          )
  
      df = df.astype(dtypes)
  
      if "primaryKey" in table["schema"]:
          df = df.set_index(table["schema"]["primaryKey"])
          if len(df.index.names) == 1:
              if df.index.name == "index":
                  df.index.name = None
          else:
              df.index.names = [
                  None if x.startswith("level_") else x for x in df.index.names
              ]
  
      return df
function_tokens: def parse_table_schema ( json , precise_float ) : table = loads ( json , precise_float = precise_float ) col_order = [ field [ "name" ] for field in table [ "schema" ] [ "fields" ] ] df = DataFrame ( table [ "data" ] , columns = col_order ) [ col_order ] dtypes = { field [ "name" ] : convert_json_field_to_pandas_type ( field ) for field in table [ "schema" ] [ "fields" ] } # Cannot directly use as_type with timezone data on object; raise for now if any ( str ( x ) . startswith ( "datetime64[ns, " ) for x in dtypes . values ( ) ) : raise NotImplementedError ( 'table="orient" can not yet read timezone data' ) # No ISO constructor for Timedelta as of yet, so need to raise if "timedelta64" in dtypes . values ( ) : raise NotImplementedError ( 'table="orient" can not yet read ISO-formatted Timedelta data' ) df = df . astype ( dtypes ) if "primaryKey" in table [ "schema" ] : df = df . set_index ( table [ "schema" ] [ "primaryKey" ] ) if len ( df . index . names ) == 1 : if df . index . name == "index" : df . index . name = None else : df . index . names = [ None if x . startswith ( "level_" ) else x for x in df . index . names ] return df