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: Gets a DataFrame containing vertex properties
  
  Parameters
  ----------
  vertex_ids : one or a collection of integers, optional
      single, list, slice, pandas array, or series of integers which
      are the vertices to include in the returned dataframe
  types : str or collection of str, optional
      types of the vertices to include in the returned data.
      Default is to return all vertex types.
  columns : str or list of str, optional
      property or properties to include in returned data.
      Default includes all properties.
  
  Returns
  -------
  DataFrame
      containing vertex properties for only the specified
      vertex_ids, columns, and/or types, or all vertex IDs if not specified.
  
  Examples
  --------
  >>> import cugraph
  >>> import cudf
  >>> 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"))
  >>> vert_df = cudf.DataFrame({"vert_id": [99, 22, 98, 34, 97, 56, 96, 88],
  ...                           "v_prop": [1, 2, 3, 4, 5, 6, 7, 8]})
  >>> pG.add_vertex_data(vert_df, type_name="vtype", vertex_col_name="vert_id")
  >>> pG.get_vertex_data().sort_index(axis=1)
  _TYPE_  _VERTEX_  v_prop
  0  vtype        99       1
  1  vtype        22       2
  2  vtype        98       3
  3  vtype        34       4
  4  vtype        97       5
  5  vtype        56       6
  6  vtype        96       7
  7  vtype        88       8
code: def get_vertex_data(self, vertex_ids=None, types=None, columns=None):
      """
      Gets a DataFrame containing vertex properties
  
      Parameters
      ----------
      vertex_ids : one or a collection of integers, optional
          single, list, slice, pandas array, or series of integers which
          are the vertices to include in the returned dataframe
      types : str or collection of str, optional
          types of the vertices to include in the returned data.
          Default is to return all vertex types.
      columns : str or list of str, optional
          property or properties to include in returned data.
          Default includes all properties.
  
      Returns
      -------
      DataFrame
          containing vertex properties for only the specified
          vertex_ids, columns, and/or types, or all vertex IDs if not specified.
  
      Examples
      --------
      >>> import cugraph
      >>> import cudf
      >>> 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"))
      >>> vert_df = cudf.DataFrame({"vert_id": [99, 22, 98, 34, 97, 56, 96, 88],
      ...                           "v_prop": [1, 2, 3, 4, 5, 6, 7, 8]})
      >>> pG.add_vertex_data(vert_df, type_name="vtype", vertex_col_name="vert_id")
      >>> pG.get_vertex_data().sort_index(axis=1)
      _TYPE_  _VERTEX_  v_prop
      0  vtype        99       1
      1  vtype        22       2
      2  vtype        98       3
      3  vtype        34       4
      4  vtype        97       5
      5  vtype        56       6
      6  vtype        96       7
      7  vtype        88       8
      """
      if self.__vertex_prop_dataframe is not None:
          df = self.__vertex_prop_dataframe
          if vertex_ids is not None:
              if isinstance(vertex_ids, int):
                  vertex_ids = [vertex_ids]
  
              try:
                  df = df.loc[vertex_ids]
              except TypeError:
                  raise TypeError(
                      "vertex_ids needs to be a list-like type "
                      f"compatible with DataFrame.loc[], got {type(vertex_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" pG.vertex_col_name and pG.type_col_name columns
          # are also included/added since they are assumed to be needed by
          # the caller.
          if columns is not None:
              # FIXME: invalid columns will result in a KeyError, should a
              # check be done here and a more PG-specific error raised?
              df = df[[self.type_col_name] + columns]
  
          # Should not drop to ensure vertex ids are returned as a column.
          df_out = df.reset_index(drop=False)
  
          # Preserve the dtype (vertex id type) to avoid cugraph algorithms
          # throwing errors due to a dtype mismatch
          index_dtype = self.__vertex_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 20 for calling the EXPERIMENTAL__PropertyGraph obj's underlying member method code with example usage: obj.get_vertex_data(vertex_ids, types, columns) and returns: None, df_out