class_docstr: GFrame is similar to SFrame but is associated with an SGraph.
  
  - GFrame can be obtained from either the `vertices` or `edges`
  attributed in any SGraph:
  
  >>> import turicreate
  >>> g = turicreate.load_sgraph(...)
  >>> vertices_gf = g.vertices
  >>> edges_gf = g.edges
  
  - GFrame has the same API as SFrame:
  
  >>> sa = vertices_gf['pagerank']
  
  >>> # column lambda transform
  >>> vertices_gf['pagerank'] = vertices_gf['pagerank'].apply(lambda x: 0.15 + 0.85 * x)
  
  >>> # frame lambda transform
  >>> vertices_gf['score'] = vertices_gf.apply(lambda x: 0.2 * x['triangle_count'] + 0.8 * x['pagerank'])
  
  >>> del vertices_gf['pagerank']
  
  - GFrame can be converted to SFrame:
  
  >>> # extract an SFrame
  >>> sf = vertices_gf.__to_sframe__()
class_docstr_tok: ["GFrame","is","similar","to","SFrame","but","is","associated","with","an","SGraph",".","-","GFrame","can","be","obtained","from","either","the","`","vertices","`","or","`","edges","`","attributed","in","any","SGraph",":",">",">",">","import","turicreate",">",">",">","g","=","turicreate.load_sgraph","(","...",")",">",">",">","vertices_gf","=","g.vertices",">",">",">","edges_gf","=","g.edges","-","GFrame","has","the","same","API","as","SFrame",":",">",">",">","sa","=","vertices_gf","[","'pagerank","'","]",">",">",">","#","column","lambda","transform",">",">",">","vertices_gf","[","'pagerank","'","]","=","vertices_gf","[","'pagerank","'","]",".apply","(","lambda","x",":","0.15","+","0.85","*","x",")",">",">",">","#","frame","lambda","transform",">",">",">","vertices_gf","[","'score","'","]","=","vertices_gf.apply","(","lambda","x",":","0.2","*","x","[","'triangle_count","'","]","+","0.8","*","x","[","'pagerank","'","]",")",">",">",">","del","vertices_gf","[","'pagerank","'","]","-","GFrame","can","be","converted","to","SFrame",":",">",">",">","#","extract","an","SFrame",">",">",">","sf","=","vertices_gf.__to_sframe__","(",")"]
docstr: Adds the specified column to this SFrame.  The number of elements in
  the data given must match every other column of the SFrame.
  
  If inplace == False (default) this operation does not modify the
  current SFrame, returning a new SFrame.
  
  If inplace == True, this operation modifies the current
  SFrame, returning self.
  
  Parameters
  ----------
  data : SArray
      The 'column' of data.
  
  column_name : string
      The name of the column. If no name is given, a default name is chosen.
  
  inplace : bool, optional. Defaults to False.
      Whether the SFrame is modified in place.
docstr_tok: ["Adds","the","specified","column","to","this","SFrame",".","The","number","of","elements","in","the","data","given","must","match","every","other","column","of","the","SFrame",".","If","inplace","==","False","(","default",")","this","operation","does","not","modify","the","current","SFrame",",","returning","a","new","SFrame",".","If","inplace","==","True",",","this","operation","modifies","the","current","SFrame",",","returning","self",".","Parameters","--","--","--","--","--","data",":","SArray","The","'column","'","of","data",".","column_name",":","string","The","name","of","the","column",".","If","no","name","is","given",",","a","default","name","is","chosen",".","inplace",":","bool",",","optional",".","Defaults","to","False",".","Whether","the","SFrame","is","modified","in","place","."]
code: def add_column(self, data, column_name="", inplace=False):
      """
      Adds the specified column to this SFrame.  The number of elements in
      the data given must match every other column of the SFrame.
  
      If inplace == False (default) this operation does not modify the
      current SFrame, returning a new SFrame.
  
      If inplace == True, this operation modifies the current
      SFrame, returning self.
  
      Parameters
      ----------
      data : SArray
          The 'column' of data.
  
      column_name : string
          The name of the column. If no name is given, a default name is chosen.
  
      inplace : bool, optional. Defaults to False.
          Whether the SFrame is modified in place.
      """
      # Check type for pandas dataframe or SArray?
      if not isinstance(data, SArray):
          raise TypeError("Must give column as SArray")
      if not isinstance(column_name, str):
          raise TypeError("Invalid column name: must be str")
  
      if inplace:
          self.__is_dirty__ = True
          with cython_context():
              if self._is_vertex_frame():
                  graph_proxy = (
                      self.__graph__.__proxy__.add_vertex_field(
                          data.__proxy__, column_name
                      )
                  )
                  self.__graph__.__proxy__ = graph_proxy
              elif self._is_edge_frame():
                  graph_proxy = self.__graph__.__proxy__.add_edge_field(
                      data.__proxy__, column_name
                  )
                  self.__graph__.__proxy__ = graph_proxy
          return self
      else:
          return super(GFrame, self).add_column(
              data, column_name, inplace=inplace
          )
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from .sframe import SFrame
  from .._cython.context import debug_trace
  from ..util import _is_non_string_iterable
  from .sarray import SArray, _create_sequential_sarray
  import copy
label_desc: Use image node_id 3 for calling the GFrame obj's underlying member method code with example usage: obj.add_column(data, column_name, inplace) and returns: self, super