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","."]
code: def _get_vector_property(
      self, df, col_name, length, fillvalue, missing
  ):
      if type(df) is not self.__dataframe_type:
          raise TypeError(
              f"Expected type {self.__dataframe_type}; got type {type(df)}"
          )
      if col_name not in df.columns:
          raise ValueError(
              f"Column name {col_name} is not in the columns of df"
          )
      if missing not in {"error", "ignore"}:
          raise ValueError(
              f'missing keyword must be one of "error" or "ignore"; got {missing!r}'
          )
      if fillvalue is not None:
          try:
              fill = list(fillvalue)
          except Exception:
              fill = [fillvalue] * length
          else:
              if len(fill) != length:
                  raise ValueError(
                      f"Wrong size of list as fill value; got {len(fill)}, "
                      f"expected {length}"
                  )
          s = df[col_name].copy()  # copy b/c we mutate below
      else:
          s = df[col_name]
      if self.__series_type is cudf.Series:
          if df.dtypes[col_name] != "list":
              raise TypeError(
                  "Wrong dtype for vector property; expected 'list', "
                  f"got {df.dtypes[col_name]}"
              )
          if fillvalue is not None:
              s[s.isnull()] = fill
          # This returns a writable view (i.e., no copies!)
          rv = (
              s._data.columns[0].children[-1].values.reshape(-1, length)
          )
      else:
          if df.dtypes[col_name] != object:
              raise TypeError(
                  "Wrong dtype for vector property; expected 'object', "
                  f"got {df.dtypes[col_name]}"
              )
          if fillvalue is not None:
              a = np.empty(1, dtype=object)
              a[0] = np.array(fill)
              s[s.isnull()] = a
          else:
              s = s[s.notnull()]
          rv = np.vstack(s.to_numpy())
      if (
          fillvalue is None
          and missing == "error"
          and rv.shape[0] != len(df)
      ):
          raise RuntimeError(
              f"Vector property {col_name!r} has empty rows! "
              'Provide a fill value or use `missing="ignore"` to ignore empty rows.'
          )
      return rv
  
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 36 for calling the EXPERIMENTAL__PropertyGraph obj's underlying member method code with example usage: obj._get_vector_property(df, col_name, length, fillvalue, missing) and returns: rv