code: def rename(self, names, inplace=False):
          
          if (type(names) is not dict):
              raise TypeError('names must be a dictionary: oldname -> newname')
  
          if inplace:
              self.__is_dirty__ = True
              with cython_context():
                  if self._is_vertex_frame():
                      graph_proxy = self.__graph__.__proxy__.rename_vertex_fields(names.keys(), names.values())
                      self.__graph__.__proxy__ = graph_proxy
                  elif self._is_edge_frame():
                      graph_proxy = self.__graph__.__proxy__.rename_edge_fields(names.keys(), names.values())
                      self.__graph__.__proxy__ = graph_proxy
              return self
          else:
              return super(GFrame, self).rename(names, inplace=inplace)
docs: Rename the columns using the 'names' dict.  This changes the names of
          the columns given as the keys and replaces them with the names given as
          the values.
  
          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
          ----------
          names : dict[string, string]
              Dictionary of [old_name, new_name]
  
          inplace : bool, optional. Defaults to False.
              Whether the SFrame is modified in place.