code: def igraph2pandas(self, ig):
          
  
          def get_edgelist(ig):
              idmap = dict(enumerate(ig.vs[self._node]))
              for e in ig.es:
                  t = e.tuple
                  yield dict({self._source: idmap[t[0]], self._destination: idmap[t[1]]},
                              **e.attributes())
  
          self._check_mandatory_bindings(False)
          if self._node is None:
              ig.vs[Plotter._defaultNodeId] = [v.index for v in ig.vs]
              self._node = Plotter._defaultNodeId
          elif self._node not in ig.vs.attributes():
              util.error('Vertex attribute "%s" bound to "node" does not exist.' % self._node)
  
          edata = get_edgelist(ig)
          ndata = [v.attributes() for v in ig.vs]
          nodes = pandas.DataFrame(ndata, columns=ig.vs.attributes())
          cols = [self._source, self._destination] + ig.es.attributes()
          edges = pandas.DataFrame(edata, columns=cols)
          return (edges, nodes)
docs: Under current bindings, transform an IGraph into a pandas edges dataframe and a nodes dataframe.
  
          **Example**
              ::
  
                  import graphistry
                  g = graphistry.bind()
  
                  es = pandas.DataFrame({'src': [0,1,2], 'dst': [1,2,0]})
                  g = g.bind(source='src', destination='dst').edges(es)
  
                  ig = g.pandas2igraph(es)
                  ig.vs['community'] = ig.community_infomap().membership
  
                  (es2, vs2) = g.igraph2pandas(ig)
                  g.nodes(vs2).bind(point_color='community').plot()