code: def _edge_list_to_dataframe(ls, src_column_name, dst_column_name):
      """
      Convert a list of edges into dataframe.
      """
      assert (
          HAS_PANDAS
      ), "Cannot use dataframe because Pandas is not available or version is too low."
      cols = reduce(set.union, (set(e.attr.keys()) for e in ls))
      df = pd.DataFrame(
          {
              src_column_name: [e.src_vid for e in ls],
              dst_column_name: [e.dst_vid for e in ls],
          }
      )
      for c in cols:
          df[c] = [e.attr.get(c) for e in ls]
      return df
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from .._connect import main
  from .sframe import SFrame
  from .sarray import SArray
  from .gframe import GFrame, VERTEX_GFRAME, EDGE_GFRAME
  from .._cython.cy_graph import UnityGraphProxy
  from .._cython.context import debug_trace
  from ..util import _is_non_string_iterable, _make_internal_url
  from .._deps import pandas
  from .._deps import HAS_PANDAS
  import inspect
  import copy
  import sys
label_desc: Use image node_id 4 for calling a global function with example usage: _edge_list_to_dataframe(ls, src_column_name, dst_column_name) and returns: df