class_docstr: Class which stores vertex and edge properties that can be used to construct
  Graphs from individual property selections and used later to annotate graph
  algorithm results with corresponding properties.
class_docstr_tok: ["Class","which","stores","vertex","and","edge","properties","that","can","be","used","to","construct","Graphs","from","individual","property","selections","and","used","later","to","annotate","graph","algorithm","results","with","corresponding","properties","."]
docstr: Return a dataframe containing edge properties for only the specified
  edge_ids, columns, and/or edge type, or all edge IDs if not specified.
  
  Parameters
  ----------
  edge_ids : int or collection of int, optional
      The list of edges to include in the edge data
  types : list, optional
      List of edge types to include in returned dataframe.
      None is the default and will return all edge types.
  columns : which edge columns will be returned, optional
      None is the default and will result in all columns being returned
  
  Returns
  -------
  Dataframe
      Containing edge ids, type edge source, destination
      and all the columns specified in the columns parameter
  
  Examples
  --------
  >>> import cudf
  >>> import cugraph
  >>> from cugraph.experimental import PropertyGraph
  >>> df = cudf.DataFrame(columns=["src", "dst", "some_property"],
  ...                     data=[(99, 22, "a"),
  ...                           (98, 34, "b"),
  ...                           (97, 56, "c"),
  ...                           (96, 88, "d"),
  ...                          ])
  >>> pG = PropertyGraph()
  >>> pG.add_edge_data(df, type_name="etype", vertex_col_names=("src", "dst"))
  >>> pG.get_edge_data(types="etype").sort_index(axis=1)
  _DST_  _EDGE_ID_  _SRC_ _TYPE_ some_property
  0     22          0     99  etype             a
  1     34          1     98  etype             b
  2     56          2     97  etype             c
  3     88          3     96  etype             d
code: def get_edge_data(self, edge_ids=None, types=None, columns=None):
      """
      Return a dataframe containing edge properties for only the specified
      edge_ids, columns, and/or edge type, or all edge IDs if not specified.
  
      Parameters
      ----------
      edge_ids : int or collection of int, optional
          The list of edges to include in the edge data
      types : list, optional
          List of edge types to include in returned dataframe.
          None is the default and will return all edge types.
      columns : which edge columns will be returned, optional
          None is the default and will result in all columns being returned
  
      Returns
      -------
      Dataframe
          Containing edge ids, type edge source, destination
          and all the columns specified in the columns parameter
  
      Examples
      --------
      >>> import cudf
      >>> import cugraph
      >>> from cugraph.experimental import PropertyGraph
      >>> df = cudf.DataFrame(columns=["src", "dst", "some_property"],
      ...                     data=[(99, 22, "a"),
      ...                           (98, 34, "b"),
      ...                           (97, 56, "c"),
      ...                           (96, 88, "d"),
      ...                          ])
      >>> pG = PropertyGraph()
      >>> pG.add_edge_data(df, type_name="etype", vertex_col_names=("src", "dst"))
      >>> pG.get_edge_data(types="etype").sort_index(axis=1)
      _DST_  _EDGE_ID_  _SRC_ _TYPE_ some_property
      0     22          0     99  etype             a
      1     34          1     98  etype             b
      2     56          2     97  etype             c
      3     88          3     96  etype             d
      """
      if self.__edge_prop_dataframe is not None:
          df = self.__edge_prop_dataframe
          if edge_ids is not None:
              if isinstance(edge_ids, int):
                  edge_ids = [edge_ids]
  
              try:
                  df = df.loc[edge_ids]
              except TypeError:
                  raise TypeError(
                      "edge_ids needs to be a list-like type "
                      f"compatible with DataFrame.loc[], got {type(edge_ids)}"
                  )
  
          if types is not None:
              if isinstance(types, str):
                  df_mask = df[self.type_col_name] == types
              else:
                  df_mask = df[self.type_col_name].isin(types)
              df = df.loc[df_mask]
  
          # The "internal" src, dst, edge_id, and type columns are also
          # included/added since they are assumed to be needed by the caller.
          if columns is None:
              # remove the "internal" weight column if one was added
              all_columns = list(self.__edge_prop_dataframe.columns)
              if self.weight_col_name in all_columns:
                  all_columns.remove(self.weight_col_name)
              df = df[all_columns]
          else:
              # FIXME: invalid columns will result in a KeyError, should a
              # check be done here and a more PG-specific error raised?
              df = df[
                  [
                      self.src_col_name,
                      self.dst_col_name,
                      self.type_col_name,
                  ]
                  + columns
              ]
  
          # Should not drop so the edge ids are returned as a column.
          df_out = df.reset_index()
  
          # Preserve the dtype (edge id type) to avoid cugraph algorithms
          # throwing errors due to a dtype mismatch
          index_dtype = self.__edge_prop_dataframe.index.dtype
          df_out.index = df_out.index.astype(index_dtype)
  
          return df_out
  
      return None
  
imports: import cudf
  import numpy
  import cugraph
  from cugraph.utilities.utils import import_optional, MissingModule, create_list_series_from_2d_ar
  from typing import Union
label_desc: Use image node_id 22 for calling the EXPERIMENTAL__PropertyGraph obj's underlying member method code with example usage: obj.get_edge_data(edge_ids, types, columns) and returns: None, df_out